<?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=Plutooo</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=Plutooo"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Plutooo"/>
	<updated>2026-05-12T22:45:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Bootloader&amp;diff=20185</id>
		<title>Bootloader</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Bootloader&amp;diff=20185"/>
		<updated>2017-07-23T13:24:02Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The bootloader is the binary code stored in the ARM9 and ARM11 boot ROMs and hence is ran when the 3DS is powered on. It&#039;s purpose is initializing hardware and loading the [[FIRM|system firmware]] from the internal [[Flash_Filesystem|NAND memory]]..&lt;br /&gt;
&lt;br /&gt;
Besides NATIVE_FIRM, the bootloader is also capable of booting other firmwares (such as TWL_FIRM and AGB_FIRM). However, this will result either in a japanese error-screen or a system shutdown, directly after FIRM-Launching.&lt;br /&gt;
&lt;br /&gt;
== Boot ROM ==&lt;br /&gt;
Upon boot, parts of the ARM9 and ARM11 boot ROMs are protected by writing to [[CONFIG#CFG_SYSPROT9|CFG_SYSPROT9]] and [[CONFIG#CFG_SYSPROT11|CFG_SYSPROT11]], respectively. The ARM9 and ARM11 boot ROMs are identical for all 3DS consoles (3DS, 3DS XL, 2DS, New 3DS, New 3DS XL, New 2DS XL)&lt;br /&gt;
&lt;br /&gt;
== NAND FIRM boot ==&lt;br /&gt;
Boot9 is not hard-coded to only handle 2 FIRM partitions: it parses all 8 NCSD partitions for this. Boot9 will attempt to use every partition listed in the NCSD which is an actual FIRM partition, in the same order listed in the NCSD, until booting one of them succeeds. Among the not-yet-processed partitions, the FIRM which has the highest value at u32 firmhdr+4 will have a FIRM-boot attempted first. Since that value is normally 0x0, the order of FIRM-partition processing is normally identical to the order of the NCSD partitions.&lt;br /&gt;
&lt;br /&gt;
Boot9 is hard-coded for using [[AES_Registers|AES]] keyslot 0x6 for NAND crypto.&lt;br /&gt;
&lt;br /&gt;
== Non-NAND FIRM boot ==&lt;br /&gt;
Boot9 can also boot from non-NAND. For this a different set of RSA pubks are used(separate pubks for retail/devunit like NAND). The spiflash FIRM image for this is also encrypted with AES-CBC using a normalkey stored in prot_boot9(separate for retail/devunit). This encryption is basically used instead of what is used for NAND-firm-partitions. This encryption is only used for the FIRM sections, the FIRM header is used raw. The AES keyslot for this is only overwritten afterwards when booting from non-NAND fails. AES keyslot 0x3F is used for this.&lt;br /&gt;
&lt;br /&gt;
  CTR_word[0] = firmimageoffset;//FIRM section offset from FIRM header&lt;br /&gt;
  CTR_word[1] = outbufaddr;//FIRM section load addr&lt;br /&gt;
  CTR_word[2] = readsize;//FIRM section size&lt;br /&gt;
  CTR_word[3] = readsize;//FIRM section size&lt;br /&gt;
&lt;br /&gt;
When booting from NAND fails, boot9 will then attempt to boot from Wifi SPI-flash(this only triggers when the wifi module hw is properly accessible/connected, which is normally the case). The base offset for spiflash FIRM is 0x400. Note that this region(all data prior to offset 0x1F300) is write-protected by the spiflash(not writable from 3DS-mode / DS-mode).&lt;br /&gt;
&lt;br /&gt;
Additionally, if the shell is closed and a special key combination (Start + Select + X) is held, boot9 will attempt to boot from an inserted NTR cartridge before booting from NAND. Note: While normally on O3DS/2DS the console will not turn on if the shell is closed (or this is faked by holding a magnet to the console), when this special key combination is held holding down the power button will cause boot to occur anyway.&lt;br /&gt;
&lt;br /&gt;
For non-NAND booting, NCSD / FIRM-backup is not used.&lt;br /&gt;
&lt;br /&gt;
== SDMMC ==&lt;br /&gt;
&lt;br /&gt;
Boot9 has code implemented for using SD(HC) cards, but the input deviceids used by boot9 for those functions are hard-coded for NAND. However, it is possible to use an SD(HC) card in place of the NAND if the NAND chip is first disconnected, and a SD card connected to the bus. Due to the CID being different, partitions will need to be re-encrypted and TWL mode will not work, due to the MBR being in the NCSD header. Using sighax, it may be possible to replace the NCSD header.&lt;br /&gt;
&lt;br /&gt;
== Boot9 RSA keyslots ==&lt;br /&gt;
&lt;br /&gt;
The following are initialized during main() startup, by initialize_rsakeyslots_pubk(). Each of these, for the ones which are actually set, have different keydata for retail/devunit.&lt;br /&gt;
* 0: Not set.&lt;br /&gt;
* 1: Used for the NAND FIRM signature.&lt;br /&gt;
* 2: Used for the non-NAND-FIRM signature.&lt;br /&gt;
* 3: Used for the NAND-NCSD FIRM signature.&lt;br /&gt;
&lt;br /&gt;
When FIRM loading is successful, initialize_x07ffbd00_x07ffc100_rsakeyslotsprivk() is called, right before calling the final function in main(). Besides ITCM writing, this overwrites all 4 RSA keyslots with modulus + private-exponents loaded from boot9 data.&lt;br /&gt;
&lt;br /&gt;
initialize_x07ffbd00_x07ffc100_rsakeyslotsprivk():&lt;br /&gt;
This initializes the 4 0x100-byte/0x200-byte chunks at 0x07ffb800+0x500(0x07ffbd00)/0x07ffb800+0x900(0x07ffc100). End address of the first section is 0x07ffc100(start addr of the second section), end address of the second section is 0x07ffc900. Hence, the first section total size is 0x400-bytes, while the second section total size is 0x800-bytes.&lt;br /&gt;
&lt;br /&gt;
These are initialized using via the boot9 data image, with ptrs from DTCM. Seperate keydata is used for retail/devunit.&lt;br /&gt;
&lt;br /&gt;
When initializing the first ITCM area: rsa_setkeyslot_privk() is called for all 4 RSA keyslots. The modulo for each one is also copied to (index*0x100) + 0x07ffb800 + 0x500. The private exponent is not copied into ITCM.&lt;br /&gt;
&lt;br /&gt;
The second ITCM area is initialized by copying 4 0x200-byte entries in a loop. These are RSA pubks+privks, which Boot9 doesn&#039;t use itself at all besides this copy loop.&lt;br /&gt;
&lt;br /&gt;
== Boot9 image data memory layout ==&lt;br /&gt;
0xffffb088 is the beginning of the boot9 image data section.&lt;br /&gt;
&lt;br /&gt;
* 0xffffb088 size 0x38-bytes: This is the array used during FIRM-section-loading for the memory-range blacklist for FIRM sections.&lt;br /&gt;
* 0xffffb0c0(end-addr of the above area) size 0x20-bytes: Unknown.&lt;br /&gt;
* 0xffffb0e0(end-addr of the above area) size 0x2f80-bytes: This is *all* of the keys stored in the image.&lt;br /&gt;
* 0xffffe060(end addr of the above key-area) size 0x230-bytes: This is the initial DTCM image @ 0xFFF00000, see below.&lt;br /&gt;
* 0xffffe290(DTCM_image_end) - {boot9 image end}: All-zero.&lt;br /&gt;
&lt;br /&gt;
Layout of the 0x2f80-byte key-area at 0xffffb0e0:&lt;br /&gt;
* 0xffffb0e0 size 0x2600-bytes: This is the RSA key-data, see below.&lt;br /&gt;
* 0xffffd6e0(end-addr of the above area) size 0x40-bytes: This is the keydata used for crypting the entire OTP with keyslot 0x3f, used by main(). The first 0x20-bytes is for retail, the remaining 0x20-bytes starting at 0xffffd700 is for devunit. Chunk+0(retail=0xffffd6e0 devunit=0xffffd700) is the normalkey, chunk+0x10(retail=0xffffd6f0 devunit=0xffffd710) is the AES-IV.&lt;br /&gt;
* ...&lt;br /&gt;
* 0xffffd760: size 0x100-bytes: First 0x80-bytes is for retail, the remaining 0x80-bytes at 0xffffd7e0 is for devunit. This 0x80-byte block is copied to 0x07ffcd00 by a Boot9 function, however that code actually does the copy in two 0x40-bytes chunks.&lt;br /&gt;
* 0xffffd860(end-addr of the above area) size 0x400-bytes: This is the bootrom_dataptr passed to the aes-keyinit function for retail. See the below Tools section for how this is processed.&lt;br /&gt;
* 0xffffdc60(end-addr of the above area) size 0x400-bytes: This is the devunit version of the above the 0x400-byte chunk. This is very last chunk of data in the boot9 data-section key-area: end addr for this area is 0xffffe060.&lt;br /&gt;
&lt;br /&gt;
Layout of the 0x2600-byte RSA key-data at 0xffffb0e0:  &lt;br /&gt;
First 0x1300-bytes is for retail, the remaining 0x1300-bytes starting at 0xffffc3e0 is for devunit.&lt;br /&gt;
* +0x0 retail=0xffffb0e0 devunit=0xffffc3e0: RSA modulo for keyslot3, initialized by initialize_rsakeyslots_pubk().&lt;br /&gt;
* +0x100 retail=0xffffb1e0 devunit=0xffffc4e0: RSA modulo for keyslot1, initialized by initialize_rsakeyslots_pubk().&lt;br /&gt;
* +0x200 retail=0xffffb2e0 devunit=0xffffc5e0: RSA modulo for keyslot2, initialized by initialize_rsakeyslots_pubk().&lt;br /&gt;
* +0x300 size 0x200, retail=0xffffb3e0 devunit=0xffffc6e0: First 0x100-bytes is the RSA modulo, then the following 0x100-bytes is the RSA privk(private-exponent). This is for RSA-engine keyslot0 with initialize_x07ffbd00_x07ffc100_rsakeyslotsprivk(), which also copies this modulo to the array starting at 0x07ffbd00.&lt;br /&gt;
* +0x500 size 0x200, retail=0xffffb5e0 devunit=0xffffc8e0: Used the same as the above block except for slot1.&lt;br /&gt;
* +0x700 size 0x200, retail=0xffffb7e0 devunit=0xffffcae0: Used the same as the above block except for slot2.&lt;br /&gt;
* +0x900 size 0x200, retail=0xffffb9e0 devunit=0xffffcce0: Used the same as the above block except for slot3.&lt;br /&gt;
* +0xb00 size 0x200, retail=0xffffbbe0 devunit=0xffffcee0: First 0x100-bytes is the RSA modulo, then the following 0x100-bytes is the RSA privk(private-exponent). The 0x200-bytes here is copied to slot0 in the array at 0x07ffc100 by initialize_x07ffbd00_x07ffc100_rsakeyslotsprivk().&lt;br /&gt;
* +0xd00 size 0x200, retail=0xffffbde0 devunit=0xffffd0e0: Used the same as the above block except for slot1.&lt;br /&gt;
* +0xf00 size 0x200, retail=0xffffbfe0 devunit=0xffffd2e0: Used the same as the above block except for slot2.&lt;br /&gt;
* +0x1100 size 0x200, retail=0xffffc1e0 devunit=0xffffd4e0: Used the same as the above block except for slot3.&lt;br /&gt;
&lt;br /&gt;
== Boot9 DTCM layout ==&lt;br /&gt;
Most of this is just ptrs / other unknown data, not actual keys. However, there is an unknown 0x10-byte block @ +0x124(there&#039;s a ptr initialized for this block elsewhere).&lt;br /&gt;
&lt;br /&gt;
== Boot11 image data memory layout ==&lt;br /&gt;
0x0001817c..0x000181f4 size 0x78-bytes: This seems to be the bootrom error screen font gfx data. This begins at the exact end-address of the crt0 code, the rest of the protected boot11 code begins at this end-address(0x000181f4).  &lt;br /&gt;
&lt;br /&gt;
0x00019400 is the beginning of the boot11 data area, the first 8-bytes here are unknown.&lt;br /&gt;
* 0x00019408..0x0001b498 size 0x2090-bytes: This is the blowfish keydata which gets copied to arm9itcm_twlkeydata+0x3e0 later.&lt;br /&gt;
* ...&lt;br /&gt;
* 0x0001c498..0x0001c4f8 size 0x60-bytes: This is the data which eventually gets copied to arm9itcm_twlkeydata+0x380.&lt;br /&gt;
* 0x0001c4f8..0x0001c538 size 0x40-bytes: This is the data which eventually gets copied to arm9itcm_twlkeydata+0x340.&lt;br /&gt;
* 0x0001c538..0x0001c578 size 0x40-bytes: This is the data which eventually gets copied to arm9itcm_twlkeydata+0x300.&lt;br /&gt;
* 0x0001c578..0x0001c5f8 size 0x80-bytes: This is the data which eventually gets copied to arm9itcm_twlkeydata+0x280.&lt;br /&gt;
* 0x0001c5f8..0x0001c678 size 0x80-bytes: This is the data which eventually gets copied to arm9itcm_twlkeydata+0x0.&lt;br /&gt;
* 0x0001c678..0x0001c878 size 0x200-bytes: This is the data which eventually gets copied to arm9itcm_twlkeydata+0x80.&lt;br /&gt;
* 0x0001c878..0x0001d078 size 0x800-bytes: These are the 3DS RSA-2048 modulus which are eventually copied to arm9_itcm+0x4900: on retail the first 4 are copied there by boot9, on devunit the last 4 are copied to itcm.&lt;br /&gt;
* 0x0001d078 size 0x120-bytes is the initial data for the .data section @ 0x1ffe8000, this is the very end of the protected arm11-bootrom.&lt;br /&gt;
&lt;br /&gt;
== AES keys ==&lt;br /&gt;
See the Tools section for how Boot9 initializes the keyslots.&lt;br /&gt;
&lt;br /&gt;
See also [[AES_Registers|here]].&lt;br /&gt;
&lt;br /&gt;
For an issue with console-unique key-init, see [[OTP_Registers|here]].&lt;br /&gt;
&lt;br /&gt;
== BootROM Errors ==&lt;br /&gt;
Sample error-screen(where firm0+firm1 RSA signatures were corrupted):&lt;br /&gt;
&lt;br /&gt;
  BOOTROM 8046&lt;br /&gt;
  ERRCODE: 00F800FF&lt;br /&gt;
  DEDEFFFF FFFFFFFF&lt;br /&gt;
  00000000 00000000&lt;br /&gt;
&lt;br /&gt;
* 1st line is: &amp;lt;code&amp;gt;print_string(..., &amp;quot;BOOTROM %X&amp;quot;, 0x8046);//This last param comes from the .pool.&amp;lt;/code&amp;gt;&lt;br /&gt;
* 2nd line is: &amp;lt;code&amp;gt;print_string(..., &amp;quot;ERRCODE:    %08X&amp;quot;, *((unsigned int*)(0x1FFFE000+0xC)));//See below memory notes.&amp;lt;/code&amp;gt;&lt;br /&gt;
* 3rd line is: &amp;lt;code&amp;gt;print_string(..., &amp;quot;%08X %08X&amp;quot;, *((unsigned int*)(0x1FFFE000+0x10))`, `*((unsigned int*)(0x1fffe000+0x14)));//See below memory notes.&amp;lt;/code&amp;gt;&lt;br /&gt;
* 4th line is: &amp;lt;code&amp;gt;print_string(..., &amp;quot;%08X %08X&amp;quot;,*((unsigned int*)(0x1FFFE000+0x18))`, `*((unsigned int*)(0x1fffe000+0x1C)));//See below memory notes.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 0x1FFFE000 memory ==&lt;br /&gt;
This memory is used by boot9 mainly for sending info to the arm11 for the error-screen. The data in this region is still stored in memory by the time the ARM9+ARM11 jumps to FIRM.&lt;br /&gt;
&lt;br /&gt;
Among boot9/boot11, the 3 words at 0x1FFFE000 seem to be &#039;&#039;only&#039;&#039; accessed by the boot11 function initializing those words.&lt;br /&gt;
&lt;br /&gt;
* u32 0x1FFFE000+0: ARM11 MPCore &amp;quot;Cycle Counter Register (CCNT)&amp;quot;.&lt;br /&gt;
* u32 0x1FFFE000+4: ARM11 MPCore &amp;quot;Count Register 0 (PMN0)&amp;quot;.&lt;br /&gt;
* u32 0x1FFFE000+8: ARM11 MPCore &amp;quot;Count Register 1 (PMN0)&amp;quot;.&lt;br /&gt;
* 8bit-entry-array 0x1FFFE000+0xC: 8bit status-codes initialized by boot9 main(), for the FIRM-boot devices. +0 is NAND and +2 is wifi-spiflash.&lt;br /&gt;
* ...&lt;br /&gt;
* 8bit-entry-array 0x1FFFE000+0x10: Status-codes originally from nand_findfirmpartition_loadfirm(), for each of the 8 NCSD partitions.&lt;br /&gt;
&lt;br /&gt;
== BootROM Status Codes ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| Success&lt;br /&gt;
|-&lt;br /&gt;
| 0xEE(~17)&lt;br /&gt;
| NCSD header validation function failed: NCSD magicnum is invalid or RSA verification failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xDE(~33)&lt;br /&gt;
| FIRM header validation function failed: FIRM magicnum is invalid or RSA verification failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xDF(~32)&lt;br /&gt;
| Failed to read sector data from the device.&lt;br /&gt;
|-&lt;br /&gt;
| 0xCF(~48)&lt;br /&gt;
| FIRM section validation function failed: FIRM section is invalid.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF7(~8)&lt;br /&gt;
| A NAND FIRM from another partition was already found with a priority(firmhdr+4) &amp;gt;= to the value for the current partition&#039;s FIRM priority.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF8(~7)&lt;br /&gt;
| The FIRM magicnum(firmhdr+0) is invalid.&lt;br /&gt;
|-&lt;br /&gt;
| 0xFF(~0)&lt;br /&gt;
| Initial value for each entry in the 8-entry array of status-codes for the NAND NCSD partitions. Indicates that the partition is not a FIRM partition(partition fs type isn&#039;t 0x3 or partition fs crypt-type isn&#039;t 0x2).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Boot9 startup ==&lt;br /&gt;
&lt;br /&gt;
0xffff0000 jumps to 0xffff8000. 0xffff8000 is crt0:&lt;br /&gt;
* Very first thing this does is clear u8 register 0x10000002 ([[CONFIG_Registers#CFG_RST11|CFG_RST11]]) bit 0 to zero.&lt;br /&gt;
* Then sp is initialized for each cpumode, IRQs/FIQs are disabled during the first mode-switch.&lt;br /&gt;
* Order of mode-switches + sp initialization: svc-mode = 0xfff04000, irq-mode = 0xfff03f00, system-mode = 0xfff03b00. Hence, the rest of the code following this runs in system-mode.&lt;br /&gt;
* Then L_ffff80cc/mpu_init() is called.&lt;br /&gt;
* Then L_ffff0038() is called, which initializes the exception-handler addresses @ 0x08000000.&lt;br /&gt;
* Then L_ffff81b8() is called(r4 + lr are saved on the DTCM stack), which after calling a memclear function which doesn&#039;t do anything, it then clears 0x08000030 size 0x10. Here the DTCM at 0xfff00000 size 0x4000 is cleared.&lt;br /&gt;
* Then L_ffff81b4() is called, which branches to DTCM_init(). This copies the initial DTCM data from the Boot9 data image into boot9, then it clears 0xFFF00230 - 0xFFF01AC0.&lt;br /&gt;
* Then LT_ffff8228/main is jumped to, with LR set to the address of an infinite-branch-loop instruction.&lt;br /&gt;
&lt;br /&gt;
mpu_init():&lt;br /&gt;
* Bitmask 0x000f9005 is cleared in the cp15 control register. MCR instructions which do then following are then executed: flush entire instruction cache, flush entire data cache, and drain write buffer.&lt;br /&gt;
* Then the 8 [[Memory_layout|MPU]] memregions are initialized.&lt;br /&gt;
* ITCM memregion reg = 0x24: baseaddr=0x0, size = 128MB(0x08000000).&lt;br /&gt;
* DTCM memregion reg = 0xfff0000a: baseaddr=0xfff00000, size=16KB(0x00004000).&lt;br /&gt;
* Then instruction cachable and data cachable/bufferable bits for the MPU regions are setup.&lt;br /&gt;
* Then the instruction/data access permissions for the MPU regions are setup.&lt;br /&gt;
* Lastly bitmask 0x0005707d is orred in the cp15 control register.&lt;br /&gt;
&lt;br /&gt;
== Boot9 main() ==&lt;br /&gt;
&lt;br /&gt;
  The following functions are called: LT_ffff2024(), LT_ffff1ff8(), pxi_init(), rsa_init(), initialize_rsakeyslots_pubk(), crypto_initialize(), and aesengine_reset().&lt;br /&gt;
  Then AES keyslot 0x3F is setup: aesengine_setnormalkey(0x3f, 5, ptr) is called. ptr on retail(CFG_UNITINFO check) is 0xffffd6e0, 0xffffd700 for devunit. Then essentially, aesengine_setctr(5, ptr+0x10) is executed.&lt;br /&gt;
  Then AES keyslot 0x3f is selected.&lt;br /&gt;
  When calling the following functions, if any of them return zero, it will immediately jump to setting ptr to 0x10012000(otp), otherwise when all of them return non-zero ptr = sp+0x94. otp_decrypt(sp+4), otp_verify(sp+4), initialize_consoleunique_itcm(sp+4, 0x07ffb800).&lt;br /&gt;
  Then the following is executed: initialize_aeskeys_wrap(ptr, 0x70);&lt;br /&gt;
  Then sp+4 size 0x100 is cleared to zero.&lt;br /&gt;
  &lt;br /&gt;
  ...&lt;br /&gt;
  &lt;br /&gt;
  NAND firm-boot code-block, is described below. Note that boot9 is basically hard-coded to use deviceid NAND, not SD.&lt;br /&gt;
  {&lt;br /&gt;
  	timer_updatestoredstate() is called, then the AES keyslot for NAND-FIRM is selected(0x6).&lt;br /&gt;
  	Then LT_ffff56c8() is called, if that returns non-zero the statuscode variable is set to ~2 then it jumps to NAND_BOOTEND.&lt;br /&gt;
  	Then LT_ffff5774(0x201) is called, if that returns non-zero the statuscode variable is set to ~1 then it jumps to NAND_BOOTEND.&lt;br /&gt;
  	Then fsdriver_setup_mmc() is called. Then nand_findfirmpartition_loadfirm(0) is called, with the statuscode variable set to the retval.&lt;br /&gt;
  	Executes a loop which runs 8 times: write the output from get_errorcode_arrayentry_xfff005e8(loopindex) to u8 0x1fffe000+0x10+loopindex(copy the array of 32bit error-codes for all 8 NCSD partitions initialized by nand_findfirmpartition_loadfirm() to the array of 8bit entries at 0x1fffe000+0x10).&lt;br /&gt;
  &lt;br /&gt;
  	NAND_BOOTEND:&lt;br /&gt;
  	Then the statuscode variable is written to u8 0x1fffe000+0xc.&lt;br /&gt;
  	Then LT_ffff5690(0x201, 0x1fffe018, 0x1fffe01c) is called.&lt;br /&gt;
  	Then LT_ffff5644() is called.&lt;br /&gt;
  	Then timer_updatestoredstate() is called.&lt;br /&gt;
  	When statuscode==0 for success, it jumps to FIRMLOAD_END. Otherwise, it continues to the next code-block.&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  Wifi spi-flash firm-boot code-block, executed when no FIRM was loaded successfully so far.&lt;br /&gt;
  {&lt;br /&gt;
  	timer_updatestoredstate() is called.&lt;br /&gt;
  &lt;br /&gt;
  	Then spi_wififlash_cmdgetstatusreg(sp+0x100) is executed. When bit0 of the output u8 at sp+0x100 is clear, it will continue this code-block, otherwise it will set the statuscode variable to ~1 then jump to SPIFLASH_BOOTEND.&lt;br /&gt;
  	Then fsdriver_setup_wififlash() is called.&lt;br /&gt;
  	Here read_firmhdr_validate_loadfirm(0, 2) is called, with the statuscode variable set to the retval.&lt;br /&gt;
  &lt;br /&gt;
  	SPIFLASH_BOOTEND:&lt;br /&gt;
  	Then the statuscode variable is written to u8 0x1fffe000+0xe.&lt;br /&gt;
  	Then timer_updatestoredstate() is called.&lt;br /&gt;
  	When statuscode==0 for success, it jumps to FIRMLOAD_END. Otherwise, it executes writenormalkey_keyslot3f(), then jumps to FIRMLOAD_FAILURE.&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  FIRMLOAD_END:&lt;br /&gt;
  Here it calls firmhdr_getarm11_entrypoint() and firmhdr_getarm9_entrypoint(). Immediately after calling each function it checks if the retval is 0, if so it then jumps to FIRMLOAD_FAILURE.&lt;br /&gt;
  After calling initialize_x07ffbd00_x07ffc100_rsakeyslotsprivk(), it jumps to FIRMLOAD_EXIT.&lt;br /&gt;
  &lt;br /&gt;
  FIRMLOAD_FAILURE:&lt;br /&gt;
  Here it clears 0x07ffb800 size 0x3c70 to zero, endaddr = 0x07fff470.&lt;br /&gt;
  Then it continues to FIRMLOAD_EXIT.&lt;br /&gt;
  &lt;br /&gt;
  FIRMLOAD_EXIT:&lt;br /&gt;
  Here firmboot() is called, which should never return. The instruction after this bl is a call for panic().&lt;br /&gt;
&lt;br /&gt;
== Boot11 ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
main():&lt;br /&gt;
  LT_1263c();&lt;br /&gt;
  ...&lt;br /&gt;
  LT_13944()&lt;br /&gt;
  ...&lt;br /&gt;
  pxi_init();&lt;br /&gt;
  initializefuncptr_firmboot_start(firmbootbegin_funcptr);&lt;br /&gt;
  firmboot();&lt;br /&gt;
  return;&lt;br /&gt;
&lt;br /&gt;
LT_12220/initializefuncptr_firmboot_start&lt;br /&gt;
  inr0=funcptr&lt;br /&gt;
  This writes inr0 to address 0x1ffe8028, then returns.&lt;br /&gt;
  This initializes the funcptr which firmboot() can call after the very first func-call.&lt;br /&gt;
&lt;br /&gt;
LT_13944&lt;br /&gt;
  if([[I2C_Registers|i2cmcu_readregf]](sp+0)==0)&lt;br /&gt;
  {&lt;br /&gt;
  	return (*((u8*)0x10147000) &amp;gt;&amp;gt; 4) &amp;amp; 1;//Reads [[GPIO_Registers|GPIO]] when reading I2C fails.&lt;br /&gt;
  }&lt;br /&gt;
  Here it basically does &amp;quot;return &amp;lt;byte loaded from sp+0&amp;gt; ^ 0x2&amp;quot;. Hence in this case, it will return 0x2 when the system shell is closed(sleep-mode), otherwise 0x0 is returned.&lt;br /&gt;
&lt;br /&gt;
LT_12454/firmboot&lt;br /&gt;
  This is the arm11 version of the boot9 firmboot() function, like boot9 this is the final function called from main(). The functionality for these two functions are identical, minus addresses.&lt;br /&gt;
  ptr = firmboot_loadentrypoint11();&lt;br /&gt;
  funcptr = *(0x1ffe8028);&lt;br /&gt;
  if(funcptr)funcptr(ptr);&lt;br /&gt;
  LT_11ffc(ptr);&lt;br /&gt;
  return;&lt;br /&gt;
&lt;br /&gt;
== Boot Procedure ==&lt;br /&gt;
&lt;br /&gt;
* 0 seconds - unit is powered on. The ARM9 and ARM11 [[Memory_layout|bootroms]] begin execution.&lt;br /&gt;
* &amp;lt;= ~1 second - BootROMs fully run, load FIRM, etc. The loaded FIRM begins running.&lt;br /&gt;
**The ARM11 sysmodules included with FIRM are launched by ARM11-kernel, etc.&lt;br /&gt;
**The [[Process_Manager_Services|PM]] module launches [[NS]].&lt;br /&gt;
**If [[Home_Menu#Auto-Boot_Function|auto-booting]] is needed, NS will [[NS#Auto-boot|auto-boot]] titles.&lt;br /&gt;
**Otherwise, NS will instead launch [[ErrDisp]] and the [[Configuration Memory#ACTIVEMENUTID|current active menu]] via the PM module. For retail units, this menu is usually the [[Home Menu]]. Note that the PM module first launches the module dependencies when launching a process, prior to actually launching the process.&lt;br /&gt;
**The further Home Menu startup process is described [[Home_Menu#Home_Menu_startup|here]]. This includes Home Menu manually launching various sysmodules.&lt;br /&gt;
&lt;br /&gt;
* 4 seconds - the LCD screens are initialized.&lt;br /&gt;
&lt;br /&gt;
* 7 seconds - [[Home Menu]] is fully initialized/loaded.&lt;br /&gt;
&lt;br /&gt;
== NAND Reads during Boot ==&lt;br /&gt;
During a successful boot on 6.x, the bootloader (and firm) reads the following sectors from NAND (in this order):&lt;br /&gt;
 00000000 (NCSD Partition Table)&lt;br /&gt;
 &lt;br /&gt;
 Only verify &#039;FIRM&#039; magic? (A second Header-read will be attempted even if everything except the magic is 0xFF...)&lt;br /&gt;
 0B130000 (FIRM Partition)&lt;br /&gt;
 0B530000 (Secondary FIRM Partition)&lt;br /&gt;
 &lt;br /&gt;
 Verify RSA signature and parse Header:&lt;br /&gt;
 0B130000 (FIRM: Header)&lt;br /&gt;
 0B130200 (FIRM: Section 1)&lt;br /&gt;
 0B163E00 (FIRM: Section 2)&lt;br /&gt;
 0B193E00 (FIRM: Section 3)&lt;br /&gt;
 &lt;br /&gt;
 00013000 .. Below is probably NATIVE_FIRM booting ..&lt;br /&gt;
 00014000&lt;br /&gt;
 00015000&lt;br /&gt;
 00016000&lt;br /&gt;
 00017000&lt;br /&gt;
 &lt;br /&gt;
 09011A00&lt;br /&gt;
 09011C00&lt;br /&gt;
 09012000&lt;br /&gt;
 09012400&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== Error Codes ==&lt;br /&gt;
When the 3DS does not find the NAND chip, the following error is displayed:&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_Bootrom_Error.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Error&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE 00000000 00000000 00000200 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Error when having SD-card reader connected to NAND during boot.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE 00000000 00000000 00000400 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND not found error (?)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE FFFFFFFF FFFFFFFF 00000080 00800000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND error when DAT1 was used as DAT0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE FFFFFFFF FFFFFFFF 00000005 00800000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND error when DAT2 was used as DAT0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE FFFFFFFF FFFFFFFF 00000005 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND error when DAT3 was used as DAT0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FF F8F8FFFF FFFFFFFF 00000000 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Both the firm0 and firm1 partitions are corrupt (failed signature checks).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800EE FFFFFFFF FFFFFFFF 00000000 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| [[NCSD]] header in sector 0 is corrupt (failed signature check).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
* [https://github.com/yellows8/boot9_tools boot9_tools]&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=19829</id>
		<title>SVC</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=19829"/>
		<updated>2017-04-10T23:39:40Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= System calls =&lt;br /&gt;
&#039;&#039;&#039;Note: The argument-lists here apply to the official syscall wrapper-functions that are found in userland processes. The actual ordering passed to the kernel via the SVC instruction is documented in [[Kernel_ABI|Kernel ABI]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Id&lt;br /&gt;
!  NF ARM11&lt;br /&gt;
!  NF ARM9&lt;br /&gt;
!  TF ARM11&lt;br /&gt;
!  Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; |  Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|ControlMemory]](u32* outaddr, u32 addr0, u32 addr1, u32 size, [[Memory Management#enum_MemoryOperation|MemoryOperation]] operation, [[Memory Management#enum_MemoryPermission|MemoryPermission]] permissions)&lt;br /&gt;
| Outaddr is usually the same as the input addr0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|QueryMemory]]([[Memory Management#struct MemoryInfo|MemoryInfo]]* info, [[Memory Management#struct PageInfo|PageInfo]]* out, u32 Addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| void ExitProcess(void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessAffinityMask(u8* affinitymask, Handle process, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessAffinityMask(Handle process, u8* affinitymask, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessIdealProcessor(s32 *idealprocessor, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessIdealProcessor(Handle process, s32 idealprocessor)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateThread|CreateThread]](Handle* thread, func entrypoint, u32 arg, u32 stacktop, s32 threadpriority, s32 processorid)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| void [[Multi-threading#ExitThread|ExitThread]](void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| void [[Multi-threading#SleepThread|SleepThread]](s64 nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadPriority|GetThreadPriority]](s32* priority, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#SetThreadPriority|SetThreadPriority]](Handle thread, s32 priority)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadAffinityMask|GetThreadAffinityMask]](u8* affinitymask, Handle thread, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#SetThreadAffinityMask|SetThreadAffinityMask]](Handle thread, u8* affinitymask, s32 processorcount)&lt;br /&gt;
| Replaced with a stub in ARM11 NATIVE_FIRM kernel beginning with [[8.0.0-18]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadIdealProcessor|GetThreadIdealProcessor]](s32* processorid, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#SetThreadIdealProcessor|SetThreadIdealProcessor]](Handle thread, s32 processorid)&lt;br /&gt;
| Replaced with a stub in ARM11 NATIVE_FIRM kernel beginning with [[8.0.0-18]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| s32 GetCurrentProcessorNumber(void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#Run|Run]](Handle process, StartupInfo* info)&lt;br /&gt;
| This starts the main() thread. Buf+0 is main-thread priority, Buf+4 is main-thread stack-size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateMutex|CreateMutex]](Handle* mutex, bool initialLocked)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ReleaseMutex|ReleaseMutex]](Handle mutex)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x15 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateSemaphore|CreateSemaphore]](Handle* semaphore, s32 initialCount, s32 maxCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ReleaseSemaphore|ReleaseSemaphore]](s32* count, Handle semaphore, s32 releaseCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateEvent|CreateEvent]](Handle* event, ResetType resettype)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#SignalEvent|SignalEvent]](Handle event)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x19 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ClearEvent|ClearEvent]](Handle event)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CreateTimer(Handle* timer, ResetType resettype)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result SetTimer(Handle timer, s64 initial_nanoseconds, s64 interval)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CancelTimer(Handle timer)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result ClearTimer(Handle timer)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|CreateMemoryBlock]](Handle* memblock, u32 addr, u32 size, [[Memory Management#enum_MemoryPermission|MemoryPermission]] mypermission, [[Memory Management#enum_MemoryPermission|MemoryPermission]] otherpermission)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|MapMemoryBlock]](Handle memblock, u32 addr, [[Memory Management#enum_MemoryPermission|MemoryPermission]] mypermissions, [[Memory Management#enum_MemoryPermission|MemoryPermission]] otherpermission)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|UnmapMemoryBlock]](Handle memblock, u32 addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#Address_Arbiters|CreateAddressArbiter]](Handle* arbiter)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#Address_Arbiters|ArbitrateAddress]](Handle arbiter, u32 addr, ArbitrationType type, s32 value, s64 nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x23 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CloseHandle(Handle handle)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result WaitSynchronization1(Handle handle, s64 timeout_nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result WaitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 timeout_nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SignalAndWait(s32* out, Handle signal, Handle* handles, s32 handleCount, bool waitAll, s64 nanoseconds)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result DuplicateHandle(Handle* out, Handle original)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| s64 GetSystemTick(void) (This returns the total CPU ticks elapsed since the CPU was powered-on)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetHandleInfo(s64* out, Handle handle, HandleInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetSystemInfo(s64* out, SystemInfoType type, s32 param)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetProcessInfo(s64* out, Handle process, ProcessInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadInfo|GetThreadInfo]](s64* out, Handle thread, ThreadInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|ConnectToPort]](Handle* out, const char* portName)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest1(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest2(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest3(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x31 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest4(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x32 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|SendSyncRequest]](Handle session)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x33 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result OpenProcess(Handle* process, u32 processId)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#OpenThread|OpenThread]](Handle* thread, Handle process, u32 threadId)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x35 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetProcessId(u32* processId, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x36 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetProcessIdOfThread|GetProcessIdOfThread]](u32* processId, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadId|GetThreadId]](u32* threadId, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimit(Handle* resourceLimit, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x39 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimitLimitValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimitCurrentValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadContext|GetThreadContext]](ThreadContext* context, Handle thread)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Break(BreakReason reason)&lt;br /&gt;
Break(BreakReason debugReason, const void* croInfo, u32 croInfoSize)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| OutputDebugString(void const, int)&lt;br /&gt;
| Does nothing on non-debug units.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ControlPerformanceCounter(unsigned long long, int, unsigned int, unsigned long long)&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x47 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreatePort]](Handle* portServer, Handle* portClient,  const char* name, s16 maxSessions)&lt;br /&gt;
| Setting name=NULL creates a private port not accessible from svcConnectToPort.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreateSessionToPort]](Handle* session, Handle port)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x49 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreateSession]](Handle* sessionServer, Handle* sessionClient)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|AcceptSession]](Handle* session, Handle port)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive1(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive2(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive3(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive4(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|ReplyAndReceive]](s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[#Interrupt Handling|BindInterrupt]](Interrupt name, Handle eventOrSemaphore, s32 priority, bool isLevelHighActive)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x51 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result UnbindInterrupt(Interrupt name, Handle eventOrSemaphore)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x52 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result InvalidateProcessDataCache(Handle process, void* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x53 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result StoreProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result FlushProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x55 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Corelink DMA Engines|StartInterProcessDma]](Handle* dma, Handle dstProcess, void* dst, Handle srcProcess, const void* src, u32 size, const DmaConfig* config)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x56 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result StopDma(Handle dma)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x57 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetDmaState(DmaState* state, Handle dma)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| RestartDma(Handle, void *, void  const*, unsigned int, signed char)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x59&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No?&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| SetGpuProt(s8 input_flag). Implemented with [[11.3.0-36|11.3.0-X]], see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No?&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| SetWifiEnabled(s0 input_flag). Implemented with [[11.4.0-37|11.4.0-X]], see below.&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x60 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result DebugActiveProcess(Handle* debug, u32 processID)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x61 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result BreakDebugProcess(Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x62 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result TerminateDebugProcess(Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x63 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessDebugEvent(DebugEventInfo* info, Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x64 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ContinueDebugEvent(Handle debug, u32 flags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x65 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x66 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetThreadList(s32* threadCount, u32* threadIds, s32 threadIdMaxCount, Handle domain)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x67 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetDebugThreadContext(ThreadContext* context, Handle debug, u32 threadId, u32 controlFlags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetDebugThreadContext(Handle debug, u32 threadId, const ThreadContext* context, u32 controlFlags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x69 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result QueryDebugProcessMemory(MemoryInfo* blockInfo, PageInfo* pageInfo, Handle debug, u32 addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result WriteProcessMemory(Handle debug, void const* buffer, u32 addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetHardwareBreakPoint(s32 registerId, u32 control, u32 value)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6D&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[Multi-threading#GetDebugThreadParam|GetDebugThreadParam]](s64* unused, u32* out, Handle kdebug, u32 threadId, DebugThreadParameter param)&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x70&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ControlProcessMemory(Handle KProcess, unsigned int Addr0, unsigned int Addr1, unsigned int Size, unsigned int Type, unsigned int Permissions)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management#Memory_Mapping|MapProcessMemory]](Handle process, u32 startAddr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x72&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management#Memory_Mapping|UnmapProcessMemory]](Handle process, u32 startAddr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x73&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#CreateCodeSet|CreateCodeSet]](Handle* handle_out, struct CodeSetInfo, u32 code_ptr, u32 ro_ptr, u32 data_ptr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result RandomStub()&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x75&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#CreateProcess|CreateProcess]](Handle* handle_out, Handle codeset_handle, u32 [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|arm11kernelcaps_ptr]], u32 arm11kernelcaps_num)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x76&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| TerminateProcess(Handle)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x77&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessResourceLimits(Handle KProcess, Handle KResourceLimit)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result CreateResourceLimit(Handle *KResourceLimit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x79&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetResourceLimitValues(Handle res_limit, LimitableResource* resource_type_list, s64* resource_list, u32 count)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x7A&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AddCodeSegment (unsigned int Addr, unsigned int Size)&lt;br /&gt;
| Stubbed on NATIVE_FIRM beginning with [[2.0.0-2]]. Used during TWL_FIRM boot.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7B&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Backdoor(unsigned int CodeAddress)&lt;br /&gt;
| This is used on ARM9 NATIVE_FIRM. &lt;br /&gt;
No ARM11 processes have access to it without some form of kernelhax, and this was removed on [[11.0.0-33]] (for ARM11).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| KernelSetState(unsigned int Type, ...)&lt;br /&gt;
| The type determines the args to be passed&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result QueryProcessMemory(MemInfo *Info, unsigned int *Out, Handle KProcess, unsigned int Addr)&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Stop point&lt;br /&gt;
| The svcaccesscontrol mask doesn&#039;t apply for this SVC. This svc doesn&#039;t check the &amp;quot;debug mode enabled&amp;quot; flag either. Does nothing if there is no [[KDebug]] object associated to the current process. Stubbed on ARM9 NATIVE_FIRM.&lt;br /&gt;
|}&lt;br /&gt;
NF: NATIVE_FIRM. TF: TWL_FIRM.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;stubbed&amp;quot; here means that the SVC only returns an error, as in the following snippet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ROM:FFF04D98                 LDR             R0, =0xF8C007F4&lt;br /&gt;
ROM:FFF04D9C                 BX              LR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Types and structures =&lt;br /&gt;
&lt;br /&gt;
== enum ResetType ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reset type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| ONESHOT&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| STICKY&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PULSE&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Timers/Events may be waited on by a thread using svcWaitSynchronization. Once the timer runs out/the event gets signaled, threads waiting on the respective handles until the timer/event is reset. STICKY timers/events wake up threads until they are explicitly reset by some thread. ONESHOT timers/events will wake up exactly one thread and then are reset automatically. PULSE timers will be reset after waking up one thread too, but will also be started again immediately. It&#039;s unknown whether PULSE is a valid reset type for events.&lt;br /&gt;
&lt;br /&gt;
== struct StartupInfo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| Priority&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Stack size&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| argc&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| argv&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| envp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== enum BreakReason ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Break Reason&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| PANIC&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ASSERT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| USER&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct DebugEventInfo ==&lt;br /&gt;
Size: 0x28 bytes&lt;br /&gt;
&lt;br /&gt;
When using svcGetProcessDebugEvent, the kernel fetches the first [[KEventInfo]] instance of the process&#039;s [[KDebug]]. The debug event is handled and parsed into this structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Event type&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Thread ID (not used in all events)&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags. Bit0 means that svcContinueDebugEvent needs to be called for this event (except for EXIT PROCESS events, for which you need to call svcContinueDebugEvent even if this bit is clear)&lt;br /&gt;
|-&lt;br /&gt;
| u8[4]&lt;br /&gt;
| Remnants of the corresponding flags in [[KEventInfo]], always 0 here&lt;br /&gt;
|-&lt;br /&gt;
| u32[6]&lt;br /&gt;
| Event-specific data (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Event type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH PROCESS&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH THREAD&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| EXIT THREAD&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| EXIT PROCESS&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| EXCEPTION&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| DLL LOAD *&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| DLL UNLOAD *&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULE IN **&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULE OUT *&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| SYSCALL IN *&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| SYSCALL OUT *&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| OUTPUT STRING&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| MAP *&lt;br /&gt;
| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; Referenced but never used in practise&lt;br /&gt;
&lt;br /&gt;
When calling svcDebugActiveProcess, an ATTACH PROCESS debug event is signaled, then ATTACH THREAD for each of its opened threads, then finally ATTACH BREAK.&lt;br /&gt;
&lt;br /&gt;
ATTACH THREAD events are also emitted when a thread is created from an attached process.&lt;br /&gt;
&lt;br /&gt;
=== ATTACH PROCESS event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| char[8]&lt;br /&gt;
| Process name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Process ID&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| &amp;quot;Other&amp;quot; flag. Always 0 in available kernel versions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ATTACH THREAD event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Creator thread ID (0 if attached by svcDebugActiveProcess)&lt;br /&gt;
|-&lt;br /&gt;
| void *&lt;br /&gt;
| Thread local storage&lt;br /&gt;
|-&lt;br /&gt;
| u32 *&lt;br /&gt;
| Entrypoint = .text load address of the parent process&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EXIT THREAD/PROCESS events ===&lt;br /&gt;
&lt;br /&gt;
A single u32 reason field is used.&lt;br /&gt;
&lt;br /&gt;
Thread exit reasons:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| (None)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| EXIT PROCESS&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE PROCESS&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Process exit reasons:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| (None)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| UNHANDLED EXCEPTION&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EXCEPTION event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Exception type&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Exception address&lt;br /&gt;
|-&lt;br /&gt;
| u32[4]&lt;br /&gt;
| Type-specific data, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exception types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Exception type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| UNDEFINED INSTRUCTION&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| PREFETCH ABORT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| DATA ABORT&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| UNALIGNED DATA ACCESS&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH BREAK&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| STOP POINT&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| USER BREAK&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| DEBUGGER BREAK&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| UNDEFINED SYSCALL&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== UNDEFINED INSTRUCTION/PREFETCH ABORT/DATA ABORT/UNALIGNED DATA ACCESS/UNDEFINED SYSCALL events ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Fault information: Fault Address Register (for DATA ABORT and UNALIGNED DATA ACCESS),&lt;br /&gt;
attempted SVC ID (for UNDEFINED SYSCALL), otherwise 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== STOP POINT event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Stop point type that caused the event: 0 = svc 0xFF, 1 = breakpoint, 2 = watchpoint&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Fault information: FAR for watchpoints, 0 otherwise&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USER BREAK event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Break reason&lt;br /&gt;
|-&lt;br /&gt;
| u32[2]&lt;br /&gt;
| Info for LOAD_RO and UNLOAD_RO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
User break types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| PANIC&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ASSERT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| USER&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| LOAD_RO&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| UNLOAD_RO&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DEBUGGER BREAK event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| s32[4]&lt;br /&gt;
| IDs of the attached process&#039;s threads that were running on each core at the time of the @ref svcBreakDebugProcess call, or -1 (only the first 2 values are meaningful on O3DS).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SCHEDULE/SYSCALL IN/OUT events ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Clock tick&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| CPU ID (SCHEDULE events) Syscall (SYSCALL events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT STRING event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| String address&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| String size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MAP event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Mapped address&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Mapped size&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| MemoryPermission&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| MemoryState&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct ThreadContext ==&lt;br /&gt;
&lt;br /&gt;
Size: 0xCC bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
! Type&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| CpuRegisters&lt;br /&gt;
| Saved CPU registers (r0-r12, sp, lr, pc, cpsr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| FpuRegisters&lt;br /&gt;
| Saved FPU registers (d0-d15, fpscr, fpexc)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The user needs to adjust pc for exceptions that occured while in Thumb mode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flags for svcGetDebugThreadContext/svcSetDebugThreadContext&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Get/set CPU GPRs (r0-r12)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Get/set CPU SPRs (sp, lr, pc, cpsr)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Get/set FPU GPRs (d0-d15 aka. f0-f31)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Get/set FPU SPRs (fpscr, fpexc)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When setting CPSR, the following assignment is done: &amp;lt;code&amp;gt;ctx-&amp;gt;cpsr = ctx-&amp;gt;cpsr &amp;amp; 0x7F0FDFF | userCtx-&amp;gt;cpuRegisters.cpsr &amp;amp; 0xF80F0200;&amp;lt;/code&amp;gt;. This is to avoid obvious security issues.&lt;br /&gt;
&lt;br /&gt;
== enum DebugThreadParameter ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| PRIORITY&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULING_MASK_LOW&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| CPU_IDEAL&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| CPU_CREATOR&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== typedef Handle ==&lt;br /&gt;
&lt;br /&gt;
User-visible references to internal objects are represented by 32-bit integers called handles. Handles are only valid in the process they have been created in; hence, they cannot be exchanged between processes directly (the [[IPC]] functions provide a mean to copy handles to other processes, though).&lt;br /&gt;
&lt;br /&gt;
There are a number of special-purpose handles, which provide easy access to information on objects in the current process:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Handle&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFF8000&lt;br /&gt;
| Handle to the active thread&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFF8001&lt;br /&gt;
| Handle to the active process&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=svcSetHardwareBreakPoint=&lt;br /&gt;
This is essentially an interface for writing values to the debug-unit (B/W)RP registers. registerId range 0..5 = breakpoints(BRP0-5), 0x100..0x101 = watchpoints(WRP0-1), anything outside of these ranges will result in an error. This is used for both adding and removing/disabling breakpoints/watchpoints, hence the raw control value parameter.&lt;br /&gt;
&lt;br /&gt;
Here the kernel sets bit15 in the DSCR, to enable monitor-mode debugging.&lt;br /&gt;
&lt;br /&gt;
Regardless of whether this is for a BRP, when bit21 is set in the control input parameter(BRP type = contextID), the kernel will load the target process [[KProcess|contextID]] and use that internally for the value field. The target process is specified via a [[KDebug]] handle passed as the &amp;quot;value&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
Lastly, the kernel disables the specified (B/W)RP, then writes the value parameter / loaded contextID to the (B/W)VR, then writes the input control value to the (B/W)CR.&lt;br /&gt;
&lt;br /&gt;
= [[DMA]] =&lt;br /&gt;
The CTRSDK code for using svcStartInterProcessDma will execute svcBreak when svcStartInterProcessDma returns an error(except for certain error value(s)). Therefore on retail, triggering a svcStartInterProcessDma via a system-module which results in an error from svcStartInterProcessDma will result in the system-module terminating.&lt;br /&gt;
&lt;br /&gt;
= Interrupt Handling =&lt;br /&gt;
&lt;br /&gt;
svcBindInterrupt registers the given event or semaphore corresponding to the handle to the global [[ARM11_Interrupts#Interrupt_Table_.28New3DS.29|&amp;quot;interrupt table&amp;quot;]] for the given interrupt ID. Interrupts 0-14 and 16-31 can never be mapped regardless of the [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|interrupt flags of the process&#039;s exheader]], and the latter are not checked when mapping interrupt 15. The &amp;quot;is level high active&amp;quot;/&amp;quot;is manual clear&amp;quot; parameter must be false when binding a semaphore handle (otherwise 0xD8E007EE &amp;quot;invalid combination&amp;quot; is returned).&lt;br /&gt;
&lt;br /&gt;
If something was already registered for the given ID, svcBindInterrupt returns error 0xD8E007F0. See [[KBaseInterruptEvent]] for more information on what happens on receipt of an interrupt.&lt;br /&gt;
&lt;br /&gt;
Applications hence can wait for specific interrupts to happen by calling WaitSynchronization(N) on the event or semaphore handles.&lt;br /&gt;
&lt;br /&gt;
The set of existing ARM11 interrupts is listed on [[ARM11 Interrupts|this page]].&lt;br /&gt;
&lt;br /&gt;
= Debugging =&lt;br /&gt;
DebugActiveProcess is used to attach to a process for debugging. This SVC can only be used when the target process&#039; ARM11 descriptors stored in the exheader have the kernel flag for &amp;quot;Enable debug&amp;quot; set. Otherwise when that flag is clear, the kernel flags for the process using this SVC must have the &amp;quot;Force debug&amp;quot; flag set.&lt;br /&gt;
&lt;br /&gt;
This SVC can only be used when a certain kernel state debug flag is non-zero(it&#039;s set to zero for retail).&lt;br /&gt;
&lt;br /&gt;
= KernelSetState =&lt;br /&gt;
KernelSetState uses the 6th [[ARM11_Interrupts#Private_Interrupts|software-generated interrupt]] for any operation involving synchronization between cores.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Type&lt;br /&gt;
!  Enabled for the NATIVE_FIRM ARM11 kernel&lt;br /&gt;
!  Enabled for the TWL_FIRM ARM11 kernel&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments : &amp;lt;code&amp;gt;u64 firmTitleID&amp;lt;/code&amp;gt; (the high 32-bits of that title ID (0 when using N3DS pm) have a special meaning on N3DS, they&#039;re otherwise ignored, see below).&lt;br /&gt;
This initializes the programID for launching [[FIRM]], then triggers launching [[FIRM]]. With New3DS kernel, it forces the firm title ID to be the New3DS NATIVE_FIRM, when the input firm title ID is 2. The high firm title ID is always set to 0x40138. On New3DS, the kernel disables the additional New3DS cache hw prior to calling the firmlaunch function from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Powers down the GPU and syncs with Process9 (waits for &amp;lt;code&amp;gt;*(vu8 *)PXI_SYNC11&amp;lt;/code&amp;gt; to be 1) during the process.&lt;br /&gt;
On New3DS, the kernel disables the additional New3DS cache hw, when it&#039;s actually enabled, prior to executing the rest of the code from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;0, void* address&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
This used for initializing the 0x1000-byte buffer used by the launched [[FIRM]]. When the first parameter is 1, this buffer is copied to the beginning of FCRAM at 0xE0000000. When it is 0, this kernel buffer is mapped to the process address specified by the second argument.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| This unmaps(?) the following virtual memory by writing value physaddr (where physaddr base is 0x80000000) to the L1 MMU table entries: 0x00300000..0x04300000, 0x08000000..0x0FE00000, and 0x10000000..0xF8000000.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Used by kernelpanic. This makes core0 enter a WFI/B infinite loop. Threads that were created on core1 or core2 have their priority set to 0x3F, except if the thread was created on core1 and whose parent process (if any) has the &amp;quot;Runnable on sleep&amp;quot; [[NCCH/Extended_Header#ARM11_Kernel_Flags|ARM11 kernel flag]] set. Core1 threads with a priority of 0x40 without a parent process have their priority set to 0x3E.&lt;br /&gt;
&lt;br /&gt;
Prior to first invoking this handler, the global variable holding &amp;lt;code&amp;gt;UNITINFO != 0&amp;lt;/code&amp;gt; is true, and if there is no [[LCD_Registers#Fill_Color|LCD fill]] set at the time kernelpanic is called, kernelpanic fills the top screen with red and the bottom screen with either yellow (if the current process was running under the APPLICATION memregion) or red. &lt;br /&gt;
&lt;br /&gt;
Before invoking this handler a second time, kernelpanic wait for the user to hold L+R+Start+Select down.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;u32 what, u64 val&amp;lt;/code&amp;gt;&lt;br /&gt;
UNITINFO needs to be non-zero. &lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;what&amp;lt;/code&amp;gt; is 0 or any invalid value, nothing is done. &lt;br /&gt;
&lt;br /&gt;
If it is 1, &amp;lt;code&amp;gt;val != 0&amp;lt;/code&amp;gt; is written to the global variable enabling ERR:F-format register dumps on user-mode CPU/VFP exceptions (the VFP exception handler acts as if this variable was always true and works on retail environments). The user handler, stack pointer to use for exception handling, and pointer to use for the exception info structure are contiguously located in either the thread&#039;s TLS, or if the handler is NULL, in the main thread&#039;s TLS, at offset 0x40. If the specified stack pointer is 1, sp_usr - 0x5c is used instead; if the specified exception info buffer is 1, sp_usr - 0x5c is used instead, and if it is 0, &amp;lt;specified stack&amp;gt; - 0x5c is used (0x5c is the size of the exception info structure that is being pushed). Configured by NS on startup on dev-units (default being 0 on non-debugger/jtag units).&lt;br /&gt;
&lt;br /&gt;
If 2, kernelpanic will be called when svcBreak is used by a non-attached process. Configured by NS on startup on dev-units (default being 0 on non-debugger/jtag units).&lt;br /&gt;
&lt;br /&gt;
If 3, this changes the scheduling/preemption mode (when no threads are being preempted, otherwise returns error 0xC8A01414), see [[KResourceLimit]] for more details.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| This triggers an MCU (hard) reboot. This reboot is triggered via device address 0x4A on the second [[I2C]] bus (the MCU). Register address 0x20 is written to with value 4. This code will not return.&lt;br /&gt;
On New3DS, the kernel disables the additional New3DS cache hw prior to calling the reboot function from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Alternate FIRM launch code-path, with different [[PXI]] FIFO word constants. Usually not used. PTM-sysmodule can use this but it&#039;s unknown what exactly triggers that in PTM-sysmodule.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Yes, implemented at some point after system-version v4.5.&lt;br /&gt;
| ?&lt;br /&gt;
| Argumens: &amp;lt;code&amp;gt;u64 titleID&amp;lt;/code&amp;gt;.&lt;br /&gt;
When creating a process, if the process has a non-zero TID equal to the parameter above (which is stored in a global variable), then KProcessHwInfo+0x32 (&amp;quot;process is the currently running app&amp;quot;) is set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
Used by NS conditionally based on the contents of the [[NS CFA]].&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;u32 config&amp;lt;/code&amp;gt;&lt;br /&gt;
ConfigureNew3DSCPU. Only available for the [[New_3DS]] kernel. The actual code for processing this runs under the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;, which runs on all ARM11 cores. Only bit0-1 of the argument are used here. Bit 0 enables higher core clock, and bit 1 enables additional (L2) cache. This configures the hardware [[PDN_Registers|register]] for the flags listed [[NCCH/Extended_Header#Flag1|here]], among other code which uses the MPCore private memory region registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetSystemInfo =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  SystemInfoType value&lt;br /&gt;
!  s32 param&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| This writes the total used memory size in the following memory regions to out: APPLICATION, SYSTEM, and BASE.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| This writes the total used memory size in the APPLICATION memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| This writes the total used memory size in the SYSTEM memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
| This writes the total used memory size in the BASE memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the FCRAM memory [[Memory_Allocation#FCRAM_Region_Data|used by the kernel]] to out.&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the total number of threads which were directly launched by the kernel, to out. No longer exists with some kernel version?&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the total number of processes which were directly launched by the kernel, to out. For the NATIVE_FIRM/SAFE_MODE_FIRM ARM11 kernel, this is normally 5, for processes sm, fs, pm, loader, and pxi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetProcessInfo =&lt;br /&gt;
Input:&lt;br /&gt;
 R0 = unused&lt;br /&gt;
 R1 = Handle process&lt;br /&gt;
 R2 = ProcessInfoType type&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
 R0 = Result&lt;br /&gt;
 R1 = output value lower word&lt;br /&gt;
 R2 = output value upper word&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  ProcessInfoType value&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of executable memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of &amp;lt;unknown&amp;gt; memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of DMA-able (code, data, IO pages, etc.) memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of &amp;lt;unknown&amp;gt; memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount handles in use by the process.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| Returns the highest count of handles that have been open at once by the process&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &lt;br /&gt;
| Returns &amp;lt;code&amp;gt;*(u32*)(KProcess+0x234)&amp;lt;/code&amp;gt; which is always 0&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &lt;br /&gt;
| Returns 0&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Returns the maximum number of threads which can be opened by this process (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 9-18&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| This only returns error 0xD8E007ED.&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| Stub: [[8.0.0-18]]. Implementation: [[11.3.0-36|11.3.0-X]].&lt;br /&gt;
| Originally this only returned 0xD8E007ED. Now with v11.3 this returns the memregion for the process: out low u32 = [[KProcess]] &amp;quot;Kernel flags from the exheader kernel descriptors&amp;quot; &amp;amp; 0xF00. High out u32 = 0.&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| low u32 = (0x20000000 - &amp;lt;LINEAR virtual-memory base for this process&amp;gt;). That is, the output value is the value which can be added to LINEAR memory vaddrs for converting to physical-memory addrs.&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the maximum amount of VRAM memory allocatable by the process: 0x800000 bytes if the process has already allocated VRAM memory, otherwise 0 (+ error 0xE0E01BF4)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the address of the first chunk of VRAM allocated by this process&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the amount of VRAM allocated by this process (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetHandleInfo =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  HandleInfoType value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| This returns the time in ticks the KProcess referenced by the handle was created. If a KProcess handle was not given, it will write whatever was in r5, r6 when the svc was called.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Get internal refcount for kernel object (not counting the one this SVC adds internally to operate), and also a boolean if it is 0 (prior to substracting 1, as explained before).&lt;br /&gt;
|-&lt;br /&gt;
| 0x32107&lt;br /&gt;
| Returns (u64) 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= svc7B Backdoor =&lt;br /&gt;
This saves SVC-mode SP+LR on the user-mode stack, then sets the SVC-mode SP to the user-mode SP. This then calls the specified code in SVC-mode. Once the called code returns, this pops the saved SP+LR off the stack for restoring the SVC-mode SP, then returns from the svc7b handler. Note that this svc7b handler does not disable IRQs, if any IRQs/context-switches occur while the SVC-mode SP is set to the user-mode one here, the ARM11-kernel will crash(which hangs the whole ARM11-side system).&lt;br /&gt;
&lt;br /&gt;
= svc 0x59 =&lt;br /&gt;
Implemented with [[11.3.0-36|11.3.0-X]]. Used with GSP module starting with that version. This always returns 0.&lt;br /&gt;
&lt;br /&gt;
When input_flag is not 0x1, it will use value 0x0 internally. When a state field already matches input_flag, this will immediately return. Otherwise, after this SVC finishes running, it will write input_flag to this state field. GSP module uses 0x0 for APPLICATION-memregionid and 0x1 for non-APPLICATION-memregionid.&lt;br /&gt;
&lt;br /&gt;
This writes &amp;quot;&amp;lt;nowiki&amp;gt;0x100 | &amp;lt;val&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot; to [[CONFIG11_Registers#CFG11_GPUPROT|pdnregbase+0x140]], where val depends on input_flag and a kernel state field for [[Configuration_Memory|APPMEMTYPE]].&lt;br /&gt;
&lt;br /&gt;
When input_flag is 0x1 val is fixed:&lt;br /&gt;
* Old3DS: 0x3&lt;br /&gt;
* New3DS: 0x460&lt;br /&gt;
&lt;br /&gt;
Otherwise, val depends on the kernel APPMEMTYPE state field:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  FIRM&lt;br /&gt;
!  [[Memory_layout|APPMEMTYPE]]&lt;br /&gt;
!  val&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 2&lt;br /&gt;
| 0x3&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 3&lt;br /&gt;
| 0x5&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 4&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| Non-value-{2/3/4}&lt;br /&gt;
| 0x7&lt;br /&gt;
|-&lt;br /&gt;
| New3DS&lt;br /&gt;
| 7&lt;br /&gt;
| 0x490&lt;br /&gt;
|-&lt;br /&gt;
| New3DS&lt;br /&gt;
| Non-value-7&lt;br /&gt;
| 0x4F0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This same register is also initialized during kernel boot starting with [[3.0.0-5]], with the following values:&lt;br /&gt;
* Old3DS: 0x103&lt;br /&gt;
* New3DS: 0x550&lt;br /&gt;
&lt;br /&gt;
= svc 0x5A =&lt;br /&gt;
Based on what NWM did previously, it looks like this one does the following:&lt;br /&gt;
&lt;br /&gt;
  if (in_flag == 1)&lt;br /&gt;
    *(u8*)0x10140180 |= 1;&lt;br /&gt;
  else&lt;br /&gt;
    *(u8*)0x10140180 &amp;amp;~ 1;&lt;br /&gt;
&lt;br /&gt;
= Kernel error-codes =&lt;br /&gt;
See [[Error codes]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Error-code value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x09401BFE&lt;br /&gt;
| Timeout occurred with svcWaitSynchronization*, when timeout is not ~0.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601801&lt;br /&gt;
| No more unused/free synchronization objects left to use in a given object&#039;s linked list.  (KEvent, KMutex, KTimer, KSemaphore, KAddressArbiter, KThread)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601802&lt;br /&gt;
| No more unused/free KSharedMemory objects left to use in the KSharedMemory linked list - out of blocks&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601809&lt;br /&gt;
| No more unused/free KSessions left to use in the KSession linked list - out of sessions&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860180A&lt;br /&gt;
| Not enough free memory available for memory allocation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920181A&lt;br /&gt;
| The session was closed by the other process..&lt;br /&gt;
|-&lt;br /&gt;
| 0xD0401834&lt;br /&gt;
| Max connections to port have been exceeded&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8609013&lt;br /&gt;
| Unknown, probably reslimit related?&lt;br /&gt;
|-&lt;br /&gt;
| 0xD88007FA&lt;br /&gt;
| Returned if no KObjectName object in the linked list  of such objects matches the port name provided to the svc. &lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007ED&lt;br /&gt;
| This indicates that a value is outside of the enum being used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007F1&lt;br /&gt;
| This error indicates Misaligned address.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007F7&lt;br /&gt;
| This error indicates that the input handle used with the SVC does not exist in the process handle-table, or that the handle kernel object type does not match the type used by the SVC.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9000402&lt;br /&gt;
| Invalid memory permissions for input/output buffers, for svcStartInterProcessDma.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9001814&lt;br /&gt;
| Failed unprivileged load or store - wrong permissions on memory&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9001BF7&lt;br /&gt;
| This error is returned when the kernel retrieves a pointer to a kernel object, but the object type doesn&#039;t match the desired one.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD92007EA&lt;br /&gt;
| This error is returned when a process attempts to use svcCreateMemoryBlock when the process memorytype is the application memorytype, and when addr=0.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E01BF5&lt;br /&gt;
| This indicates an invalid address was used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF8C007F4&lt;br /&gt;
| Invalid type/param0-param3 input for svcKernelSetState. This is also returned for those syscalls marked as stubs.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=19828</id>
		<title>SVC</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=19828"/>
		<updated>2017-04-10T23:38:31Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= System calls =&lt;br /&gt;
&#039;&#039;&#039;Note: The argument-lists here apply to the official syscall wrapper-functions that are found in userland processes. The actual ordering passed to the kernel via the SVC instruction is documented in [[Kernel_ABI|Kernel ABI]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Id&lt;br /&gt;
!  NF ARM11&lt;br /&gt;
!  NF ARM9&lt;br /&gt;
!  TF ARM11&lt;br /&gt;
!  Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; |  Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|ControlMemory]](u32* outaddr, u32 addr0, u32 addr1, u32 size, [[Memory Management#enum_MemoryOperation|MemoryOperation]] operation, [[Memory Management#enum_MemoryPermission|MemoryPermission]] permissions)&lt;br /&gt;
| Outaddr is usually the same as the input addr0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|QueryMemory]]([[Memory Management#struct MemoryInfo|MemoryInfo]]* info, [[Memory Management#struct PageInfo|PageInfo]]* out, u32 Addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| void ExitProcess(void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessAffinityMask(u8* affinitymask, Handle process, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessAffinityMask(Handle process, u8* affinitymask, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessIdealProcessor(s32 *idealprocessor, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessIdealProcessor(Handle process, s32 idealprocessor)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateThread|CreateThread]](Handle* thread, func entrypoint, u32 arg, u32 stacktop, s32 threadpriority, s32 processorid)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| void [[Multi-threading#ExitThread|ExitThread]](void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| void [[Multi-threading#SleepThread|SleepThread]](s64 nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadPriority|GetThreadPriority]](s32* priority, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#SetThreadPriority|SetThreadPriority]](Handle thread, s32 priority)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadAffinityMask|GetThreadAffinityMask]](u8* affinitymask, Handle thread, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#SetThreadAffinityMask|SetThreadAffinityMask]](Handle thread, u8* affinitymask, s32 processorcount)&lt;br /&gt;
| Replaced with a stub in ARM11 NATIVE_FIRM kernel beginning with [[8.0.0-18]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadIdealProcessor|GetThreadIdealProcessor]](s32* processorid, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#SetThreadIdealProcessor|SetThreadIdealProcessor]](Handle thread, s32 processorid)&lt;br /&gt;
| Replaced with a stub in ARM11 NATIVE_FIRM kernel beginning with [[8.0.0-18]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| s32 GetCurrentProcessorNumber(void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#Run|Run]](Handle process, StartupInfo* info)&lt;br /&gt;
| This starts the main() thread. Buf+0 is main-thread priority, Buf+4 is main-thread stack-size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateMutex|CreateMutex]](Handle* mutex, bool initialLocked)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ReleaseMutex|ReleaseMutex]](Handle mutex)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x15 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateSemaphore|CreateSemaphore]](Handle* semaphore, s32 initialCount, s32 maxCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ReleaseSemaphore|ReleaseSemaphore]](s32* count, Handle semaphore, s32 releaseCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateEvent|CreateEvent]](Handle* event, ResetType resettype)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#SignalEvent|SignalEvent]](Handle event)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x19 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ClearEvent|ClearEvent]](Handle event)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CreateTimer(Handle* timer, ResetType resettype)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result SetTimer(Handle timer, s64 initial_nanoseconds, s64 interval)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CancelTimer(Handle timer)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result ClearTimer(Handle timer)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|CreateMemoryBlock]](Handle* memblock, u32 addr, u32 size, [[Memory Management#enum_MemoryPermission|MemoryPermission]] mypermission, [[Memory Management#enum_MemoryPermission|MemoryPermission]] otherpermission)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|MapMemoryBlock]](Handle memblock, u32 addr, [[Memory Management#enum_MemoryPermission|MemoryPermission]] mypermissions, [[Memory Management#enum_MemoryPermission|MemoryPermission]] otherpermission)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|UnmapMemoryBlock]](Handle memblock, u32 addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#Address_Arbiters|CreateAddressArbiter]](Handle* arbiter)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#Address_Arbiters|ArbitrateAddress]](Handle arbiter, u32 addr, ArbitrationType type, s32 value, s64 nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x23 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CloseHandle(Handle handle)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result WaitSynchronization1(Handle handle, s64 timeout_nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result WaitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 timeout_nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SignalAndWait(s32* out, Handle signal, Handle* handles, s32 handleCount, bool waitAll, s64 nanoseconds)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result DuplicateHandle(Handle* out, Handle original)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| s64 GetSystemTick(void) (This returns the total CPU ticks elapsed since the CPU was powered-on)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetHandleInfo(s64* out, Handle handle, HandleInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetSystemInfo(s64* out, SystemInfoType type, s32 param)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetProcessInfo(s64* out, Handle process, ProcessInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadInfo|GetThreadInfo]](s64* out, Handle thread, ThreadInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|ConnectToPort]](Handle* out, const char* portName)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest1(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest2(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest3(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x31 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest4(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x32 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|SendSyncRequest]](Handle session)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x33 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result OpenProcess(Handle* process, u32 processId)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#OpenThread|OpenThread]](Handle* thread, Handle process, u32 threadId)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x35 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetProcessId(u32* processId, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x36 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetProcessIdOfThread|GetProcessIdOfThread]](u32* processId, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadId|GetThreadId]](u32* threadId, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimit(Handle* resourceLimit, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x39 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimitLimitValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimitCurrentValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadContext|GetThreadContext]](ThreadContext* context, Handle thread)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Break(BreakReason reason)&lt;br /&gt;
Break(BreakReason debugReason, const void* croInfo, u32 croInfoSize)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| OutputDebugString(void const, int)&lt;br /&gt;
| Does nothing on non-debug units.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ControlPerformanceCounter(unsigned long long, int, unsigned int, unsigned long long)&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x47 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreatePort]](Handle* portServer, Handle* portClient,  const char* name, s16 maxSessions)&lt;br /&gt;
| Setting name=NULL creates a private port not accessible from svcConnectToPort.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreateSessionToPort]](Handle* session, Handle port)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x49 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreateSession]](Handle* sessionServer, Handle* sessionClient)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|AcceptSession]](Handle* session, Handle port)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive1(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive2(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive3(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive4(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|ReplyAndReceive]](s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[#Interrupt Handling|BindInterrupt]](Interrupt name, Handle eventOrSemaphore, s32 priority, bool isLevelHighActive)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x51 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result UnbindInterrupt(Interrupt name, Handle eventOrSemaphore)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x52 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result InvalidateProcessDataCache(Handle process, void* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x53 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result StoreProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result FlushProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x55 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Corelink DMA Engines|StartInterProcessDma]](Handle* dma, Handle dstProcess, void* dst, Handle srcProcess, const void* src, u32 size, const DmaConfig* config)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x56 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result StopDma(Handle dma)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x57 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetDmaState(DmaState* state, Handle dma)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| RestartDma(Handle, void *, void  const*, unsigned int, signed char)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x59&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No?&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| SetGpuProt(s8 input_flag). Implemented with [[11.3.0-36|11.3.0-X]], see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No?&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| PokeWifiPdnReg(s0 input_flag). Implemented with [[11.4.0-37|11.4.0-X]], see below.&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x60 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result DebugActiveProcess(Handle* debug, u32 processID)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x61 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result BreakDebugProcess(Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x62 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result TerminateDebugProcess(Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x63 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessDebugEvent(DebugEventInfo* info, Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x64 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ContinueDebugEvent(Handle debug, u32 flags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x65 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x66 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetThreadList(s32* threadCount, u32* threadIds, s32 threadIdMaxCount, Handle domain)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x67 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetDebugThreadContext(ThreadContext* context, Handle debug, u32 threadId, u32 controlFlags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetDebugThreadContext(Handle debug, u32 threadId, const ThreadContext* context, u32 controlFlags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x69 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result QueryDebugProcessMemory(MemoryInfo* blockInfo, PageInfo* pageInfo, Handle debug, u32 addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result WriteProcessMemory(Handle debug, void const* buffer, u32 addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetHardwareBreakPoint(s32 registerId, u32 control, u32 value)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6D&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[Multi-threading#GetDebugThreadParam|GetDebugThreadParam]](s64* unused, u32* out, Handle kdebug, u32 threadId, DebugThreadParameter param)&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x70&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ControlProcessMemory(Handle KProcess, unsigned int Addr0, unsigned int Addr1, unsigned int Size, unsigned int Type, unsigned int Permissions)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management#Memory_Mapping|MapProcessMemory]](Handle process, u32 startAddr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x72&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management#Memory_Mapping|UnmapProcessMemory]](Handle process, u32 startAddr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x73&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#CreateCodeSet|CreateCodeSet]](Handle* handle_out, struct CodeSetInfo, u32 code_ptr, u32 ro_ptr, u32 data_ptr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result RandomStub()&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x75&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#CreateProcess|CreateProcess]](Handle* handle_out, Handle codeset_handle, u32 [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|arm11kernelcaps_ptr]], u32 arm11kernelcaps_num)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x76&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| TerminateProcess(Handle)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x77&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessResourceLimits(Handle KProcess, Handle KResourceLimit)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result CreateResourceLimit(Handle *KResourceLimit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x79&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetResourceLimitValues(Handle res_limit, LimitableResource* resource_type_list, s64* resource_list, u32 count)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x7A&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AddCodeSegment (unsigned int Addr, unsigned int Size)&lt;br /&gt;
| Stubbed on NATIVE_FIRM beginning with [[2.0.0-2]]. Used during TWL_FIRM boot.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7B&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Backdoor(unsigned int CodeAddress)&lt;br /&gt;
| This is used on ARM9 NATIVE_FIRM. &lt;br /&gt;
No ARM11 processes have access to it without some form of kernelhax, and this was removed on [[11.0.0-33]] (for ARM11).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| KernelSetState(unsigned int Type, ...)&lt;br /&gt;
| The type determines the args to be passed&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result QueryProcessMemory(MemInfo *Info, unsigned int *Out, Handle KProcess, unsigned int Addr)&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Stop point&lt;br /&gt;
| The svcaccesscontrol mask doesn&#039;t apply for this SVC. This svc doesn&#039;t check the &amp;quot;debug mode enabled&amp;quot; flag either. Does nothing if there is no [[KDebug]] object associated to the current process. Stubbed on ARM9 NATIVE_FIRM.&lt;br /&gt;
|}&lt;br /&gt;
NF: NATIVE_FIRM. TF: TWL_FIRM.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;stubbed&amp;quot; here means that the SVC only returns an error, as in the following snippet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ROM:FFF04D98                 LDR             R0, =0xF8C007F4&lt;br /&gt;
ROM:FFF04D9C                 BX              LR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Types and structures =&lt;br /&gt;
&lt;br /&gt;
== enum ResetType ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reset type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| ONESHOT&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| STICKY&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PULSE&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Timers/Events may be waited on by a thread using svcWaitSynchronization. Once the timer runs out/the event gets signaled, threads waiting on the respective handles until the timer/event is reset. STICKY timers/events wake up threads until they are explicitly reset by some thread. ONESHOT timers/events will wake up exactly one thread and then are reset automatically. PULSE timers will be reset after waking up one thread too, but will also be started again immediately. It&#039;s unknown whether PULSE is a valid reset type for events.&lt;br /&gt;
&lt;br /&gt;
== struct StartupInfo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| Priority&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Stack size&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| argc&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| argv&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| envp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== enum BreakReason ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Break Reason&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| PANIC&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ASSERT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| USER&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct DebugEventInfo ==&lt;br /&gt;
Size: 0x28 bytes&lt;br /&gt;
&lt;br /&gt;
When using svcGetProcessDebugEvent, the kernel fetches the first [[KEventInfo]] instance of the process&#039;s [[KDebug]]. The debug event is handled and parsed into this structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Event type&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Thread ID (not used in all events)&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags. Bit0 means that svcContinueDebugEvent needs to be called for this event (except for EXIT PROCESS events, for which you need to call svcContinueDebugEvent even if this bit is clear)&lt;br /&gt;
|-&lt;br /&gt;
| u8[4]&lt;br /&gt;
| Remnants of the corresponding flags in [[KEventInfo]], always 0 here&lt;br /&gt;
|-&lt;br /&gt;
| u32[6]&lt;br /&gt;
| Event-specific data (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Event type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH PROCESS&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH THREAD&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| EXIT THREAD&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| EXIT PROCESS&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| EXCEPTION&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| DLL LOAD *&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| DLL UNLOAD *&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULE IN **&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULE OUT *&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| SYSCALL IN *&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| SYSCALL OUT *&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| OUTPUT STRING&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| MAP *&lt;br /&gt;
| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; Referenced but never used in practise&lt;br /&gt;
&lt;br /&gt;
When calling svcDebugActiveProcess, an ATTACH PROCESS debug event is signaled, then ATTACH THREAD for each of its opened threads, then finally ATTACH BREAK.&lt;br /&gt;
&lt;br /&gt;
ATTACH THREAD events are also emitted when a thread is created from an attached process.&lt;br /&gt;
&lt;br /&gt;
=== ATTACH PROCESS event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| char[8]&lt;br /&gt;
| Process name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Process ID&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| &amp;quot;Other&amp;quot; flag. Always 0 in available kernel versions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ATTACH THREAD event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Creator thread ID (0 if attached by svcDebugActiveProcess)&lt;br /&gt;
|-&lt;br /&gt;
| void *&lt;br /&gt;
| Thread local storage&lt;br /&gt;
|-&lt;br /&gt;
| u32 *&lt;br /&gt;
| Entrypoint = .text load address of the parent process&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EXIT THREAD/PROCESS events ===&lt;br /&gt;
&lt;br /&gt;
A single u32 reason field is used.&lt;br /&gt;
&lt;br /&gt;
Thread exit reasons:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| (None)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| EXIT PROCESS&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE PROCESS&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Process exit reasons:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| (None)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| UNHANDLED EXCEPTION&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EXCEPTION event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Exception type&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Exception address&lt;br /&gt;
|-&lt;br /&gt;
| u32[4]&lt;br /&gt;
| Type-specific data, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exception types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Exception type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| UNDEFINED INSTRUCTION&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| PREFETCH ABORT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| DATA ABORT&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| UNALIGNED DATA ACCESS&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH BREAK&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| STOP POINT&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| USER BREAK&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| DEBUGGER BREAK&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| UNDEFINED SYSCALL&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== UNDEFINED INSTRUCTION/PREFETCH ABORT/DATA ABORT/UNALIGNED DATA ACCESS/UNDEFINED SYSCALL events ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Fault information: Fault Address Register (for DATA ABORT and UNALIGNED DATA ACCESS),&lt;br /&gt;
attempted SVC ID (for UNDEFINED SYSCALL), otherwise 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== STOP POINT event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Stop point type that caused the event: 0 = svc 0xFF, 1 = breakpoint, 2 = watchpoint&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Fault information: FAR for watchpoints, 0 otherwise&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USER BREAK event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Break reason&lt;br /&gt;
|-&lt;br /&gt;
| u32[2]&lt;br /&gt;
| Info for LOAD_RO and UNLOAD_RO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
User break types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| PANIC&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ASSERT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| USER&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| LOAD_RO&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| UNLOAD_RO&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DEBUGGER BREAK event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| s32[4]&lt;br /&gt;
| IDs of the attached process&#039;s threads that were running on each core at the time of the @ref svcBreakDebugProcess call, or -1 (only the first 2 values are meaningful on O3DS).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SCHEDULE/SYSCALL IN/OUT events ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Clock tick&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| CPU ID (SCHEDULE events) Syscall (SYSCALL events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT STRING event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| String address&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| String size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MAP event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Mapped address&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Mapped size&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| MemoryPermission&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| MemoryState&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct ThreadContext ==&lt;br /&gt;
&lt;br /&gt;
Size: 0xCC bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
! Type&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| CpuRegisters&lt;br /&gt;
| Saved CPU registers (r0-r12, sp, lr, pc, cpsr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| FpuRegisters&lt;br /&gt;
| Saved FPU registers (d0-d15, fpscr, fpexc)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The user needs to adjust pc for exceptions that occured while in Thumb mode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flags for svcGetDebugThreadContext/svcSetDebugThreadContext&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Get/set CPU GPRs (r0-r12)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Get/set CPU SPRs (sp, lr, pc, cpsr)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Get/set FPU GPRs (d0-d15 aka. f0-f31)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Get/set FPU SPRs (fpscr, fpexc)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When setting CPSR, the following assignment is done: &amp;lt;code&amp;gt;ctx-&amp;gt;cpsr = ctx-&amp;gt;cpsr &amp;amp; 0x7F0FDFF | userCtx-&amp;gt;cpuRegisters.cpsr &amp;amp; 0xF80F0200;&amp;lt;/code&amp;gt;. This is to avoid obvious security issues.&lt;br /&gt;
&lt;br /&gt;
== enum DebugThreadParameter ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| PRIORITY&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULING_MASK_LOW&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| CPU_IDEAL&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| CPU_CREATOR&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== typedef Handle ==&lt;br /&gt;
&lt;br /&gt;
User-visible references to internal objects are represented by 32-bit integers called handles. Handles are only valid in the process they have been created in; hence, they cannot be exchanged between processes directly (the [[IPC]] functions provide a mean to copy handles to other processes, though).&lt;br /&gt;
&lt;br /&gt;
There are a number of special-purpose handles, which provide easy access to information on objects in the current process:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Handle&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFF8000&lt;br /&gt;
| Handle to the active thread&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFF8001&lt;br /&gt;
| Handle to the active process&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=svcSetHardwareBreakPoint=&lt;br /&gt;
This is essentially an interface for writing values to the debug-unit (B/W)RP registers. registerId range 0..5 = breakpoints(BRP0-5), 0x100..0x101 = watchpoints(WRP0-1), anything outside of these ranges will result in an error. This is used for both adding and removing/disabling breakpoints/watchpoints, hence the raw control value parameter.&lt;br /&gt;
&lt;br /&gt;
Here the kernel sets bit15 in the DSCR, to enable monitor-mode debugging.&lt;br /&gt;
&lt;br /&gt;
Regardless of whether this is for a BRP, when bit21 is set in the control input parameter(BRP type = contextID), the kernel will load the target process [[KProcess|contextID]] and use that internally for the value field. The target process is specified via a [[KDebug]] handle passed as the &amp;quot;value&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
Lastly, the kernel disables the specified (B/W)RP, then writes the value parameter / loaded contextID to the (B/W)VR, then writes the input control value to the (B/W)CR.&lt;br /&gt;
&lt;br /&gt;
= [[DMA]] =&lt;br /&gt;
The CTRSDK code for using svcStartInterProcessDma will execute svcBreak when svcStartInterProcessDma returns an error(except for certain error value(s)). Therefore on retail, triggering a svcStartInterProcessDma via a system-module which results in an error from svcStartInterProcessDma will result in the system-module terminating.&lt;br /&gt;
&lt;br /&gt;
= Interrupt Handling =&lt;br /&gt;
&lt;br /&gt;
svcBindInterrupt registers the given event or semaphore corresponding to the handle to the global [[ARM11_Interrupts#Interrupt_Table_.28New3DS.29|&amp;quot;interrupt table&amp;quot;]] for the given interrupt ID. Interrupts 0-14 and 16-31 can never be mapped regardless of the [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|interrupt flags of the process&#039;s exheader]], and the latter are not checked when mapping interrupt 15. The &amp;quot;is level high active&amp;quot;/&amp;quot;is manual clear&amp;quot; parameter must be false when binding a semaphore handle (otherwise 0xD8E007EE &amp;quot;invalid combination&amp;quot; is returned).&lt;br /&gt;
&lt;br /&gt;
If something was already registered for the given ID, svcBindInterrupt returns error 0xD8E007F0. See [[KBaseInterruptEvent]] for more information on what happens on receipt of an interrupt.&lt;br /&gt;
&lt;br /&gt;
Applications hence can wait for specific interrupts to happen by calling WaitSynchronization(N) on the event or semaphore handles.&lt;br /&gt;
&lt;br /&gt;
The set of existing ARM11 interrupts is listed on [[ARM11 Interrupts|this page]].&lt;br /&gt;
&lt;br /&gt;
= Debugging =&lt;br /&gt;
DebugActiveProcess is used to attach to a process for debugging. This SVC can only be used when the target process&#039; ARM11 descriptors stored in the exheader have the kernel flag for &amp;quot;Enable debug&amp;quot; set. Otherwise when that flag is clear, the kernel flags for the process using this SVC must have the &amp;quot;Force debug&amp;quot; flag set.&lt;br /&gt;
&lt;br /&gt;
This SVC can only be used when a certain kernel state debug flag is non-zero(it&#039;s set to zero for retail).&lt;br /&gt;
&lt;br /&gt;
= KernelSetState =&lt;br /&gt;
KernelSetState uses the 6th [[ARM11_Interrupts#Private_Interrupts|software-generated interrupt]] for any operation involving synchronization between cores.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Type&lt;br /&gt;
!  Enabled for the NATIVE_FIRM ARM11 kernel&lt;br /&gt;
!  Enabled for the TWL_FIRM ARM11 kernel&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments : &amp;lt;code&amp;gt;u64 firmTitleID&amp;lt;/code&amp;gt; (the high 32-bits of that title ID (0 when using N3DS pm) have a special meaning on N3DS, they&#039;re otherwise ignored, see below).&lt;br /&gt;
This initializes the programID for launching [[FIRM]], then triggers launching [[FIRM]]. With New3DS kernel, it forces the firm title ID to be the New3DS NATIVE_FIRM, when the input firm title ID is 2. The high firm title ID is always set to 0x40138. On New3DS, the kernel disables the additional New3DS cache hw prior to calling the firmlaunch function from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Powers down the GPU and syncs with Process9 (waits for &amp;lt;code&amp;gt;*(vu8 *)PXI_SYNC11&amp;lt;/code&amp;gt; to be 1) during the process.&lt;br /&gt;
On New3DS, the kernel disables the additional New3DS cache hw, when it&#039;s actually enabled, prior to executing the rest of the code from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;0, void* address&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
This used for initializing the 0x1000-byte buffer used by the launched [[FIRM]]. When the first parameter is 1, this buffer is copied to the beginning of FCRAM at 0xE0000000. When it is 0, this kernel buffer is mapped to the process address specified by the second argument.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| This unmaps(?) the following virtual memory by writing value physaddr (where physaddr base is 0x80000000) to the L1 MMU table entries: 0x00300000..0x04300000, 0x08000000..0x0FE00000, and 0x10000000..0xF8000000.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Used by kernelpanic. This makes core0 enter a WFI/B infinite loop. Threads that were created on core1 or core2 have their priority set to 0x3F, except if the thread was created on core1 and whose parent process (if any) has the &amp;quot;Runnable on sleep&amp;quot; [[NCCH/Extended_Header#ARM11_Kernel_Flags|ARM11 kernel flag]] set. Core1 threads with a priority of 0x40 without a parent process have their priority set to 0x3E.&lt;br /&gt;
&lt;br /&gt;
Prior to first invoking this handler, the global variable holding &amp;lt;code&amp;gt;UNITINFO != 0&amp;lt;/code&amp;gt; is true, and if there is no [[LCD_Registers#Fill_Color|LCD fill]] set at the time kernelpanic is called, kernelpanic fills the top screen with red and the bottom screen with either yellow (if the current process was running under the APPLICATION memregion) or red. &lt;br /&gt;
&lt;br /&gt;
Before invoking this handler a second time, kernelpanic wait for the user to hold L+R+Start+Select down.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;u32 what, u64 val&amp;lt;/code&amp;gt;&lt;br /&gt;
UNITINFO needs to be non-zero. &lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;what&amp;lt;/code&amp;gt; is 0 or any invalid value, nothing is done. &lt;br /&gt;
&lt;br /&gt;
If it is 1, &amp;lt;code&amp;gt;val != 0&amp;lt;/code&amp;gt; is written to the global variable enabling ERR:F-format register dumps on user-mode CPU/VFP exceptions (the VFP exception handler acts as if this variable was always true and works on retail environments). The user handler, stack pointer to use for exception handling, and pointer to use for the exception info structure are contiguously located in either the thread&#039;s TLS, or if the handler is NULL, in the main thread&#039;s TLS, at offset 0x40. If the specified stack pointer is 1, sp_usr - 0x5c is used instead; if the specified exception info buffer is 1, sp_usr - 0x5c is used instead, and if it is 0, &amp;lt;specified stack&amp;gt; - 0x5c is used (0x5c is the size of the exception info structure that is being pushed). Configured by NS on startup on dev-units (default being 0 on non-debugger/jtag units).&lt;br /&gt;
&lt;br /&gt;
If 2, kernelpanic will be called when svcBreak is used by a non-attached process. Configured by NS on startup on dev-units (default being 0 on non-debugger/jtag units).&lt;br /&gt;
&lt;br /&gt;
If 3, this changes the scheduling/preemption mode (when no threads are being preempted, otherwise returns error 0xC8A01414), see [[KResourceLimit]] for more details.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| This triggers an MCU (hard) reboot. This reboot is triggered via device address 0x4A on the second [[I2C]] bus (the MCU). Register address 0x20 is written to with value 4. This code will not return.&lt;br /&gt;
On New3DS, the kernel disables the additional New3DS cache hw prior to calling the reboot function from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Alternate FIRM launch code-path, with different [[PXI]] FIFO word constants. Usually not used. PTM-sysmodule can use this but it&#039;s unknown what exactly triggers that in PTM-sysmodule.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Yes, implemented at some point after system-version v4.5.&lt;br /&gt;
| ?&lt;br /&gt;
| Argumens: &amp;lt;code&amp;gt;u64 titleID&amp;lt;/code&amp;gt;.&lt;br /&gt;
When creating a process, if the process has a non-zero TID equal to the parameter above (which is stored in a global variable), then KProcessHwInfo+0x32 (&amp;quot;process is the currently running app&amp;quot;) is set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
Used by NS conditionally based on the contents of the [[NS CFA]].&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;u32 config&amp;lt;/code&amp;gt;&lt;br /&gt;
ConfigureNew3DSCPU. Only available for the [[New_3DS]] kernel. The actual code for processing this runs under the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;, which runs on all ARM11 cores. Only bit0-1 of the argument are used here. Bit 0 enables higher core clock, and bit 1 enables additional (L2) cache. This configures the hardware [[PDN_Registers|register]] for the flags listed [[NCCH/Extended_Header#Flag1|here]], among other code which uses the MPCore private memory region registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetSystemInfo =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  SystemInfoType value&lt;br /&gt;
!  s32 param&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| This writes the total used memory size in the following memory regions to out: APPLICATION, SYSTEM, and BASE.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| This writes the total used memory size in the APPLICATION memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| This writes the total used memory size in the SYSTEM memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
| This writes the total used memory size in the BASE memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the FCRAM memory [[Memory_Allocation#FCRAM_Region_Data|used by the kernel]] to out.&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the total number of threads which were directly launched by the kernel, to out. No longer exists with some kernel version?&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the total number of processes which were directly launched by the kernel, to out. For the NATIVE_FIRM/SAFE_MODE_FIRM ARM11 kernel, this is normally 5, for processes sm, fs, pm, loader, and pxi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetProcessInfo =&lt;br /&gt;
Input:&lt;br /&gt;
 R0 = unused&lt;br /&gt;
 R1 = Handle process&lt;br /&gt;
 R2 = ProcessInfoType type&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
 R0 = Result&lt;br /&gt;
 R1 = output value lower word&lt;br /&gt;
 R2 = output value upper word&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  ProcessInfoType value&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of executable memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of &amp;lt;unknown&amp;gt; memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of DMA-able (code, data, IO pages, etc.) memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of &amp;lt;unknown&amp;gt; memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount handles in use by the process.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| Returns the highest count of handles that have been open at once by the process&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &lt;br /&gt;
| Returns &amp;lt;code&amp;gt;*(u32*)(KProcess+0x234)&amp;lt;/code&amp;gt; which is always 0&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &lt;br /&gt;
| Returns 0&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Returns the maximum number of threads which can be opened by this process (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 9-18&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| This only returns error 0xD8E007ED.&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| Stub: [[8.0.0-18]]. Implementation: [[11.3.0-36|11.3.0-X]].&lt;br /&gt;
| Originally this only returned 0xD8E007ED. Now with v11.3 this returns the memregion for the process: out low u32 = [[KProcess]] &amp;quot;Kernel flags from the exheader kernel descriptors&amp;quot; &amp;amp; 0xF00. High out u32 = 0.&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| low u32 = (0x20000000 - &amp;lt;LINEAR virtual-memory base for this process&amp;gt;). That is, the output value is the value which can be added to LINEAR memory vaddrs for converting to physical-memory addrs.&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the maximum amount of VRAM memory allocatable by the process: 0x800000 bytes if the process has already allocated VRAM memory, otherwise 0 (+ error 0xE0E01BF4)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the address of the first chunk of VRAM allocated by this process&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the amount of VRAM allocated by this process (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetHandleInfo =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  HandleInfoType value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| This returns the time in ticks the KProcess referenced by the handle was created. If a KProcess handle was not given, it will write whatever was in r5, r6 when the svc was called.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Get internal refcount for kernel object (not counting the one this SVC adds internally to operate), and also a boolean if it is 0 (prior to substracting 1, as explained before).&lt;br /&gt;
|-&lt;br /&gt;
| 0x32107&lt;br /&gt;
| Returns (u64) 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= svc7B Backdoor =&lt;br /&gt;
This saves SVC-mode SP+LR on the user-mode stack, then sets the SVC-mode SP to the user-mode SP. This then calls the specified code in SVC-mode. Once the called code returns, this pops the saved SP+LR off the stack for restoring the SVC-mode SP, then returns from the svc7b handler. Note that this svc7b handler does not disable IRQs, if any IRQs/context-switches occur while the SVC-mode SP is set to the user-mode one here, the ARM11-kernel will crash(which hangs the whole ARM11-side system).&lt;br /&gt;
&lt;br /&gt;
= svc 0x59 =&lt;br /&gt;
Implemented with [[11.3.0-36|11.3.0-X]]. Used with GSP module starting with that version. This always returns 0.&lt;br /&gt;
&lt;br /&gt;
When input_flag is not 0x1, it will use value 0x0 internally. When a state field already matches input_flag, this will immediately return. Otherwise, after this SVC finishes running, it will write input_flag to this state field. GSP module uses 0x0 for APPLICATION-memregionid and 0x1 for non-APPLICATION-memregionid.&lt;br /&gt;
&lt;br /&gt;
This writes &amp;quot;&amp;lt;nowiki&amp;gt;0x100 | &amp;lt;val&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot; to [[CONFIG11_Registers#CFG11_GPUPROT|pdnregbase+0x140]], where val depends on input_flag and a kernel state field for [[Configuration_Memory|APPMEMTYPE]].&lt;br /&gt;
&lt;br /&gt;
When input_flag is 0x1 val is fixed:&lt;br /&gt;
* Old3DS: 0x3&lt;br /&gt;
* New3DS: 0x460&lt;br /&gt;
&lt;br /&gt;
Otherwise, val depends on the kernel APPMEMTYPE state field:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  FIRM&lt;br /&gt;
!  [[Memory_layout|APPMEMTYPE]]&lt;br /&gt;
!  val&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 2&lt;br /&gt;
| 0x3&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 3&lt;br /&gt;
| 0x5&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 4&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| Non-value-{2/3/4}&lt;br /&gt;
| 0x7&lt;br /&gt;
|-&lt;br /&gt;
| New3DS&lt;br /&gt;
| 7&lt;br /&gt;
| 0x490&lt;br /&gt;
|-&lt;br /&gt;
| New3DS&lt;br /&gt;
| Non-value-7&lt;br /&gt;
| 0x4F0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This same register is also initialized during kernel boot starting with [[3.0.0-5]], with the following values:&lt;br /&gt;
* Old3DS: 0x103&lt;br /&gt;
* New3DS: 0x550&lt;br /&gt;
&lt;br /&gt;
= svc 0x5A =&lt;br /&gt;
Based on what NWM did previously, it looks like this one does the following:&lt;br /&gt;
&lt;br /&gt;
  if (in_flag == 1)&lt;br /&gt;
    *(u8*)0x10140180 |= 1;&lt;br /&gt;
  else&lt;br /&gt;
    *(u8*)0x10140180 &amp;amp;~ 1;&lt;br /&gt;
&lt;br /&gt;
= Kernel error-codes =&lt;br /&gt;
See [[Error codes]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Error-code value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x09401BFE&lt;br /&gt;
| Timeout occurred with svcWaitSynchronization*, when timeout is not ~0.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601801&lt;br /&gt;
| No more unused/free synchronization objects left to use in a given object&#039;s linked list.  (KEvent, KMutex, KTimer, KSemaphore, KAddressArbiter, KThread)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601802&lt;br /&gt;
| No more unused/free KSharedMemory objects left to use in the KSharedMemory linked list - out of blocks&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601809&lt;br /&gt;
| No more unused/free KSessions left to use in the KSession linked list - out of sessions&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860180A&lt;br /&gt;
| Not enough free memory available for memory allocation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920181A&lt;br /&gt;
| The session was closed by the other process..&lt;br /&gt;
|-&lt;br /&gt;
| 0xD0401834&lt;br /&gt;
| Max connections to port have been exceeded&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8609013&lt;br /&gt;
| Unknown, probably reslimit related?&lt;br /&gt;
|-&lt;br /&gt;
| 0xD88007FA&lt;br /&gt;
| Returned if no KObjectName object in the linked list  of such objects matches the port name provided to the svc. &lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007ED&lt;br /&gt;
| This indicates that a value is outside of the enum being used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007F1&lt;br /&gt;
| This error indicates Misaligned address.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007F7&lt;br /&gt;
| This error indicates that the input handle used with the SVC does not exist in the process handle-table, or that the handle kernel object type does not match the type used by the SVC.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9000402&lt;br /&gt;
| Invalid memory permissions for input/output buffers, for svcStartInterProcessDma.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9001814&lt;br /&gt;
| Failed unprivileged load or store - wrong permissions on memory&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9001BF7&lt;br /&gt;
| This error is returned when the kernel retrieves a pointer to a kernel object, but the object type doesn&#039;t match the desired one.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD92007EA&lt;br /&gt;
| This error is returned when a process attempts to use svcCreateMemoryBlock when the process memorytype is the application memorytype, and when addr=0.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E01BF5&lt;br /&gt;
| This indicates an invalid address was used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF8C007F4&lt;br /&gt;
| Invalid type/param0-param3 input for svcKernelSetState. This is also returned for those syscalls marked as stubs.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=11.4.0-37&amp;diff=19827</id>
		<title>11.4.0-37</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=11.4.0-37&amp;diff=19827"/>
		<updated>2017-04-10T23:22:03Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Old3DS+New3DS 11.4.0-37 system update was released on April 10, 2017. This Old3DS update was released for the following regions: USA, EUR, JPN, CHN, KOR, and TWN. This New3DS update was released for the following regions: USA, EUR, JPN, CHN, KOR, and TWN.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: yes.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/667/p/430/c/267 Official] USA change-log:&lt;br /&gt;
* Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
&amp;lt;fill this in (manually) later&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[NWM_Services|NWM-sysmodule]]===&lt;br /&gt;
The [[CONFIG11_Registers]] are no longer directly mapped under userland for NWM-sysmodule.&lt;br /&gt;
This prevents anything under NWM-module from modifying the GPUPROT register.&lt;br /&gt;
&lt;br /&gt;
The crt0-poke in PDN that NWM previously did:&lt;br /&gt;
  0x1EC4010C |= 0x10&lt;br /&gt;
&lt;br /&gt;
.. has been removed from NWM. This one has presumably moved into kernel bootup.&lt;br /&gt;
&lt;br /&gt;
Reads from 0x1EC40180 have been replaced by a new syscall, [[SVC|0x5A]].&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=04-10-17_08-00-38&amp;amp;sys=ctr]&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=04-10-17_08-00-47&amp;amp;sys=ktr]&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=19826</id>
		<title>SVC</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=19826"/>
		<updated>2017-04-10T23:19:11Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* System calls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= System calls =&lt;br /&gt;
&#039;&#039;&#039;Note: The argument-lists here apply to the official syscall wrapper-functions that are found in userland processes. The actual ordering passed to the kernel via the SVC instruction is documented in [[Kernel_ABI|Kernel ABI]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Id&lt;br /&gt;
!  NF ARM11&lt;br /&gt;
!  NF ARM9&lt;br /&gt;
!  TF ARM11&lt;br /&gt;
!  Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; |  Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|ControlMemory]](u32* outaddr, u32 addr0, u32 addr1, u32 size, [[Memory Management#enum_MemoryOperation|MemoryOperation]] operation, [[Memory Management#enum_MemoryPermission|MemoryPermission]] permissions)&lt;br /&gt;
| Outaddr is usually the same as the input addr0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|QueryMemory]]([[Memory Management#struct MemoryInfo|MemoryInfo]]* info, [[Memory Management#struct PageInfo|PageInfo]]* out, u32 Addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| void ExitProcess(void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessAffinityMask(u8* affinitymask, Handle process, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessAffinityMask(Handle process, u8* affinitymask, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessIdealProcessor(s32 *idealprocessor, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessIdealProcessor(Handle process, s32 idealprocessor)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateThread|CreateThread]](Handle* thread, func entrypoint, u32 arg, u32 stacktop, s32 threadpriority, s32 processorid)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| void [[Multi-threading#ExitThread|ExitThread]](void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| void [[Multi-threading#SleepThread|SleepThread]](s64 nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadPriority|GetThreadPriority]](s32* priority, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#SetThreadPriority|SetThreadPriority]](Handle thread, s32 priority)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadAffinityMask|GetThreadAffinityMask]](u8* affinitymask, Handle thread, s32 processorcount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#SetThreadAffinityMask|SetThreadAffinityMask]](Handle thread, u8* affinitymask, s32 processorcount)&lt;br /&gt;
| Replaced with a stub in ARM11 NATIVE_FIRM kernel beginning with [[8.0.0-18]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadIdealProcessor|GetThreadIdealProcessor]](s32* processorid, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#SetThreadIdealProcessor|SetThreadIdealProcessor]](Handle thread, s32 processorid)&lt;br /&gt;
| Replaced with a stub in ARM11 NATIVE_FIRM kernel beginning with [[8.0.0-18]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| s32 GetCurrentProcessorNumber(void)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#Run|Run]](Handle process, StartupInfo* info)&lt;br /&gt;
| This starts the main() thread. Buf+0 is main-thread priority, Buf+4 is main-thread stack-size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateMutex|CreateMutex]](Handle* mutex, bool initialLocked)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ReleaseMutex|ReleaseMutex]](Handle mutex)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x15 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateSemaphore|CreateSemaphore]](Handle* semaphore, s32 initialCount, s32 maxCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ReleaseSemaphore|ReleaseSemaphore]](s32* count, Handle semaphore, s32 releaseCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#CreateEvent|CreateEvent]](Handle* event, ResetType resettype)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#SignalEvent|SignalEvent]](Handle event)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x19 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#ClearEvent|ClearEvent]](Handle event)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CreateTimer(Handle* timer, ResetType resettype)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result SetTimer(Handle timer, s64 initial_nanoseconds, s64 interval)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CancelTimer(Handle timer)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result ClearTimer(Handle timer)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|CreateMemoryBlock]](Handle* memblock, u32 addr, u32 size, [[Memory Management#enum_MemoryPermission|MemoryPermission]] mypermission, [[Memory Management#enum_MemoryPermission|MemoryPermission]] otherpermission)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|MapMemoryBlock]](Handle memblock, u32 addr, [[Memory Management#enum_MemoryPermission|MemoryPermission]] mypermissions, [[Memory Management#enum_MemoryPermission|MemoryPermission]] otherpermission)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management|UnmapMemoryBlock]](Handle memblock, u32 addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#Address_Arbiters|CreateAddressArbiter]](Handle* arbiter)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#Address_Arbiters|ArbitrateAddress]](Handle arbiter, u32 addr, ArbitrationType type, s32 value, s64 nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x23 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result CloseHandle(Handle handle)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result WaitSynchronization1(Handle handle, s64 timeout_nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result WaitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 timeout_nanoseconds)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SignalAndWait(s32* out, Handle signal, Handle* handles, s32 handleCount, bool waitAll, s64 nanoseconds)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result DuplicateHandle(Handle* out, Handle original)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| s64 GetSystemTick(void) (This returns the total CPU ticks elapsed since the CPU was powered-on)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetHandleInfo(s64* out, Handle handle, HandleInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetSystemInfo(s64* out, SystemInfoType type, s32 param)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetProcessInfo(s64* out, Handle process, ProcessInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadInfo|GetThreadInfo]](s64* out, Handle thread, ThreadInfoType type)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|ConnectToPort]](Handle* out, const char* portName)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest1(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest2(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest3(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x31 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SendSyncRequest4(Handle session)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x32 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|SendSyncRequest]](Handle session)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x33 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result OpenProcess(Handle* process, u32 processId)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#OpenThread|OpenThread]](Handle* thread, Handle process, u32 threadId)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x35 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetProcessId(u32* processId, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x36 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetProcessIdOfThread|GetProcessIdOfThread]](u32* processId, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Multi-threading#GetThreadId|GetThreadId]](u32* threadId, Handle thread)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimit(Handle* resourceLimit, Handle process)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x39 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimitLimitValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetResourceLimitCurrentValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#GetThreadContext|GetThreadContext]](ThreadContext* context, Handle thread)&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Break(BreakReason reason)&lt;br /&gt;
Break(BreakReason debugReason, const void* croInfo, u32 croInfoSize)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| OutputDebugString(void const, int)&lt;br /&gt;
| Does nothing on non-debug units.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ControlPerformanceCounter(unsigned long long, int, unsigned int, unsigned long long)&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x47 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreatePort]](Handle* portServer, Handle* portClient,  const char* name, s16 maxSessions)&lt;br /&gt;
| Setting name=NULL creates a private port not accessible from svcConnectToPort.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreateSessionToPort]](Handle* session, Handle port)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x49 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|CreateSession]](Handle* sessionServer, Handle* sessionClient)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|AcceptSession]](Handle* session, Handle port)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive1(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive2(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive3(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReplyAndReceive4(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4F &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[IPC|ReplyAndReceive]](s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[#Interrupt Handling|BindInterrupt]](Interrupt name, Handle eventOrSemaphore, s32 priority, bool isLevelHighActive)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x51 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result UnbindInterrupt(Interrupt name, Handle eventOrSemaphore)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x52 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result InvalidateProcessDataCache(Handle process, void* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x53 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result StoreProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result FlushProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x55 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result [[Corelink DMA Engines|StartInterProcessDma]](Handle* dma, Handle dstProcess, void* dst, Handle srcProcess, const void* src, u32 size, const DmaConfig* config)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x56 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result StopDma(Handle dma)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x57 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Result GetDmaState(DmaState* state, Handle dma)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| RestartDma(Handle, void *, void  const*, unsigned int, signed char)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x59&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No?&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| SetGpuProt(s8 input_flag). Implemented with [[11.3.0-36|11.3.0-X]], see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No?&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| GetWifiPdnReg&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x60 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result DebugActiveProcess(Handle* debug, u32 processID)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x61 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result BreakDebugProcess(Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x62 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result TerminateDebugProcess(Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x63 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessDebugEvent(DebugEventInfo* info, Handle debug)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x64 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ContinueDebugEvent(Handle debug, u32 flags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x65 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x66 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetThreadList(s32* threadCount, u32* threadIds, s32 threadIdMaxCount, Handle domain)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x67 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result GetDebugThreadContext(ThreadContext* context, Handle debug, u32 threadId, u32 controlFlags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetDebugThreadContext(Handle debug, u32 threadId, const ThreadContext* context, u32 controlFlags)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x69 &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result QueryDebugProcessMemory(MemoryInfo* blockInfo, PageInfo* pageInfo, Handle debug, u32 addr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6A &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6B &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result WriteProcessMemory(Handle debug, void const* buffer, u32 addr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetHardwareBreakPoint(s32 registerId, u32 control, u32 value)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x6D&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[Multi-threading#GetDebugThreadParam|GetDebugThreadParam]](s64* unused, u32* out, Handle kdebug, u32 threadId, DebugThreadParameter param)&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x70&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result ControlProcessMemory(Handle KProcess, unsigned int Addr0, unsigned int Addr1, unsigned int Size, unsigned int Type, unsigned int Permissions)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management#Memory_Mapping|MapProcessMemory]](Handle process, u32 startAddr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x72&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Memory Management#Memory_Mapping|UnmapProcessMemory]](Handle process, u32 startAddr, u32 size)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x73&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#CreateCodeSet|CreateCodeSet]](Handle* handle_out, struct CodeSetInfo, u32 code_ptr, u32 ro_ptr, u32 data_ptr)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result RandomStub()&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0x75&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result [[Multi-threading#CreateProcess|CreateProcess]](Handle* handle_out, Handle codeset_handle, u32 [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|arm11kernelcaps_ptr]], u32 arm11kernelcaps_num)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x76&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| TerminateProcess(Handle)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x77&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetProcessResourceLimits(Handle KProcess, Handle KResourceLimit)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result CreateResourceLimit(Handle *KResourceLimit)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x79&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result SetResourceLimitValues(Handle res_limit, LimitableResource* resource_type_list, s64* resource_list, u32 count)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x7A&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AddCodeSegment (unsigned int Addr, unsigned int Size)&lt;br /&gt;
| Stubbed on NATIVE_FIRM beginning with [[2.0.0-2]]. Used during TWL_FIRM boot.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7B&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Backdoor(unsigned int CodeAddress)&lt;br /&gt;
| This is used on ARM9 NATIVE_FIRM. &lt;br /&gt;
No ARM11 processes have access to it without some form of kernelhax, and this was removed on [[11.0.0-33]] (for ARM11).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| KernelSetState(unsigned int Type, ...)&lt;br /&gt;
| The type determines the args to be passed&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Result QueryProcessMemory(MemInfo *Info, unsigned int *Out, Handle KProcess, unsigned int Addr)&lt;br /&gt;
|&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Stop point&lt;br /&gt;
| The svcaccesscontrol mask doesn&#039;t apply for this SVC. This svc doesn&#039;t check the &amp;quot;debug mode enabled&amp;quot; flag either. Does nothing if there is no [[KDebug]] object associated to the current process. Stubbed on ARM9 NATIVE_FIRM.&lt;br /&gt;
|}&lt;br /&gt;
NF: NATIVE_FIRM. TF: TWL_FIRM.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;stubbed&amp;quot; here means that the SVC only returns an error, as in the following snippet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ROM:FFF04D98                 LDR             R0, =0xF8C007F4&lt;br /&gt;
ROM:FFF04D9C                 BX              LR&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Types and structures =&lt;br /&gt;
&lt;br /&gt;
== enum ResetType ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reset type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| ONESHOT&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| STICKY&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PULSE&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Timers/Events may be waited on by a thread using svcWaitSynchronization. Once the timer runs out/the event gets signaled, threads waiting on the respective handles until the timer/event is reset. STICKY timers/events wake up threads until they are explicitly reset by some thread. ONESHOT timers/events will wake up exactly one thread and then are reset automatically. PULSE timers will be reset after waking up one thread too, but will also be started again immediately. It&#039;s unknown whether PULSE is a valid reset type for events.&lt;br /&gt;
&lt;br /&gt;
== struct StartupInfo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| Priority&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Stack size&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| argc&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| argv&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| envp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== enum BreakReason ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Break Reason&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| PANIC&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ASSERT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| USER&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct DebugEventInfo ==&lt;br /&gt;
Size: 0x28 bytes&lt;br /&gt;
&lt;br /&gt;
When using svcGetProcessDebugEvent, the kernel fetches the first [[KEventInfo]] instance of the process&#039;s [[KDebug]]. The debug event is handled and parsed into this structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Event type&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Thread ID (not used in all events)&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags. Bit0 means that svcContinueDebugEvent needs to be called for this event (except for EXIT PROCESS events, for which you need to call svcContinueDebugEvent even if this bit is clear)&lt;br /&gt;
|-&lt;br /&gt;
| u8[4]&lt;br /&gt;
| Remnants of the corresponding flags in [[KEventInfo]], always 0 here&lt;br /&gt;
|-&lt;br /&gt;
| u32[6]&lt;br /&gt;
| Event-specific data (see below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Event type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH PROCESS&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH THREAD&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| EXIT THREAD&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| EXIT PROCESS&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| EXCEPTION&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| DLL LOAD *&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| DLL UNLOAD *&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULE IN **&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULE OUT *&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| SYSCALL IN *&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| SYSCALL OUT *&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| OUTPUT STRING&lt;br /&gt;
| 11&lt;br /&gt;
|-&lt;br /&gt;
| MAP *&lt;br /&gt;
| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Unused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; Referenced but never used in practise&lt;br /&gt;
&lt;br /&gt;
When calling svcDebugActiveProcess, an ATTACH PROCESS debug event is signaled, then ATTACH THREAD for each of its opened threads, then finally ATTACH BREAK.&lt;br /&gt;
&lt;br /&gt;
ATTACH THREAD events are also emitted when a thread is created from an attached process.&lt;br /&gt;
&lt;br /&gt;
=== ATTACH PROCESS event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| char[8]&lt;br /&gt;
| Process name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Process ID&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| &amp;quot;Other&amp;quot; flag. Always 0 in available kernel versions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ATTACH THREAD event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Creator thread ID (0 if attached by svcDebugActiveProcess)&lt;br /&gt;
|-&lt;br /&gt;
| void *&lt;br /&gt;
| Thread local storage&lt;br /&gt;
|-&lt;br /&gt;
| u32 *&lt;br /&gt;
| Entrypoint = .text load address of the parent process&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EXIT THREAD/PROCESS events ===&lt;br /&gt;
&lt;br /&gt;
A single u32 reason field is used.&lt;br /&gt;
&lt;br /&gt;
Thread exit reasons:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| (None)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| EXIT PROCESS&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE PROCESS&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Process exit reasons:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| (None)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TERMINATE&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| UNHANDLED EXCEPTION&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== EXCEPTION event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Exception type&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Exception address&lt;br /&gt;
|-&lt;br /&gt;
| u32[4]&lt;br /&gt;
| Type-specific data, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exception types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Exception type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| UNDEFINED INSTRUCTION&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| PREFETCH ABORT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| DATA ABORT&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| UNALIGNED DATA ACCESS&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| ATTACH BREAK&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| STOP POINT&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| USER BREAK&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| DEBUGGER BREAK&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| UNDEFINED SYSCALL&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== UNDEFINED INSTRUCTION/PREFETCH ABORT/DATA ABORT/UNALIGNED DATA ACCESS/UNDEFINED SYSCALL events ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Fault information: Fault Address Register (for DATA ABORT and UNALIGNED DATA ACCESS),&lt;br /&gt;
attempted SVC ID (for UNDEFINED SYSCALL), otherwise 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== STOP POINT event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Stop point type that caused the event: 0 = svc 0xFF, 1 = breakpoint, 2 = watchpoint&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Fault information: FAR for watchpoints, 0 otherwise&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USER BREAK event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Break reason&lt;br /&gt;
|-&lt;br /&gt;
| u32[2]&lt;br /&gt;
| Info for LOAD_RO and UNLOAD_RO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
User break types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reason&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| PANIC&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ASSERT&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| USER&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| LOAD_RO&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| UNLOAD_RO&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DEBUGGER BREAK event ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| s32[4]&lt;br /&gt;
| IDs of the attached process&#039;s threads that were running on each core at the time of the @ref svcBreakDebugProcess call, or -1 (only the first 2 values are meaningful on O3DS).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SCHEDULE/SYSCALL IN/OUT events ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Clock tick&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| CPU ID (SCHEDULE events) Syscall (SYSCALL events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT STRING event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| String address&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| String size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MAP event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Mapped address&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Mapped size&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| MemoryPermission&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| MemoryState&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct ThreadContext ==&lt;br /&gt;
&lt;br /&gt;
Size: 0xCC bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
! Type&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| CpuRegisters&lt;br /&gt;
| Saved CPU registers (r0-r12, sp, lr, pc, cpsr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| FpuRegisters&lt;br /&gt;
| Saved FPU registers (d0-d15, fpscr, fpexc)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The user needs to adjust pc for exceptions that occured while in Thumb mode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flags for svcGetDebugThreadContext/svcSetDebugThreadContext&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Get/set CPU GPRs (r0-r12)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Get/set CPU SPRs (sp, lr, pc, cpsr)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Get/set FPU GPRs (d0-d15 aka. f0-f31)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Get/set FPU SPRs (fpscr, fpexc)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When setting CPSR, the following assignment is done: &amp;lt;code&amp;gt;ctx-&amp;gt;cpsr = ctx-&amp;gt;cpsr &amp;amp; 0x7F0FDFF | userCtx-&amp;gt;cpuRegisters.cpsr &amp;amp; 0xF80F0200;&amp;lt;/code&amp;gt;. This is to avoid obvious security issues.&lt;br /&gt;
&lt;br /&gt;
== enum DebugThreadParameter ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| PRIORITY&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| SCHEDULING_MASK_LOW&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| CPU_IDEAL&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| CPU_CREATOR&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== typedef Handle ==&lt;br /&gt;
&lt;br /&gt;
User-visible references to internal objects are represented by 32-bit integers called handles. Handles are only valid in the process they have been created in; hence, they cannot be exchanged between processes directly (the [[IPC]] functions provide a mean to copy handles to other processes, though).&lt;br /&gt;
&lt;br /&gt;
There are a number of special-purpose handles, which provide easy access to information on objects in the current process:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Handle&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFF8000&lt;br /&gt;
| Handle to the active thread&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFF8001&lt;br /&gt;
| Handle to the active process&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=svcSetHardwareBreakPoint=&lt;br /&gt;
This is essentially an interface for writing values to the debug-unit (B/W)RP registers. registerId range 0..5 = breakpoints(BRP0-5), 0x100..0x101 = watchpoints(WRP0-1), anything outside of these ranges will result in an error. This is used for both adding and removing/disabling breakpoints/watchpoints, hence the raw control value parameter.&lt;br /&gt;
&lt;br /&gt;
Here the kernel sets bit15 in the DSCR, to enable monitor-mode debugging.&lt;br /&gt;
&lt;br /&gt;
Regardless of whether this is for a BRP, when bit21 is set in the control input parameter(BRP type = contextID), the kernel will load the target process [[KProcess|contextID]] and use that internally for the value field. The target process is specified via a [[KDebug]] handle passed as the &amp;quot;value&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
Lastly, the kernel disables the specified (B/W)RP, then writes the value parameter / loaded contextID to the (B/W)VR, then writes the input control value to the (B/W)CR.&lt;br /&gt;
&lt;br /&gt;
= [[DMA]] =&lt;br /&gt;
The CTRSDK code for using svcStartInterProcessDma will execute svcBreak when svcStartInterProcessDma returns an error(except for certain error value(s)). Therefore on retail, triggering a svcStartInterProcessDma via a system-module which results in an error from svcStartInterProcessDma will result in the system-module terminating.&lt;br /&gt;
&lt;br /&gt;
= Interrupt Handling =&lt;br /&gt;
&lt;br /&gt;
svcBindInterrupt registers the given event or semaphore corresponding to the handle to the global [[ARM11_Interrupts#Interrupt_Table_.28New3DS.29|&amp;quot;interrupt table&amp;quot;]] for the given interrupt ID. Interrupts 0-14 and 16-31 can never be mapped regardless of the [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|interrupt flags of the process&#039;s exheader]], and the latter are not checked when mapping interrupt 15. The &amp;quot;is level high active&amp;quot;/&amp;quot;is manual clear&amp;quot; parameter must be false when binding a semaphore handle (otherwise 0xD8E007EE &amp;quot;invalid combination&amp;quot; is returned).&lt;br /&gt;
&lt;br /&gt;
If something was already registered for the given ID, svcBindInterrupt returns error 0xD8E007F0. See [[KBaseInterruptEvent]] for more information on what happens on receipt of an interrupt.&lt;br /&gt;
&lt;br /&gt;
Applications hence can wait for specific interrupts to happen by calling WaitSynchronization(N) on the event or semaphore handles.&lt;br /&gt;
&lt;br /&gt;
The set of existing ARM11 interrupts is listed on [[ARM11 Interrupts|this page]].&lt;br /&gt;
&lt;br /&gt;
= Debugging =&lt;br /&gt;
DebugActiveProcess is used to attach to a process for debugging. This SVC can only be used when the target process&#039; ARM11 descriptors stored in the exheader have the kernel flag for &amp;quot;Enable debug&amp;quot; set. Otherwise when that flag is clear, the kernel flags for the process using this SVC must have the &amp;quot;Force debug&amp;quot; flag set.&lt;br /&gt;
&lt;br /&gt;
This SVC can only be used when a certain kernel state debug flag is non-zero(it&#039;s set to zero for retail).&lt;br /&gt;
&lt;br /&gt;
= KernelSetState =&lt;br /&gt;
KernelSetState uses the 6th [[ARM11_Interrupts#Private_Interrupts|software-generated interrupt]] for any operation involving synchronization between cores.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Type&lt;br /&gt;
!  Enabled for the NATIVE_FIRM ARM11 kernel&lt;br /&gt;
!  Enabled for the TWL_FIRM ARM11 kernel&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments : &amp;lt;code&amp;gt;u64 firmTitleID&amp;lt;/code&amp;gt; (the high 32-bits of that title ID (0 when using N3DS pm) have a special meaning on N3DS, they&#039;re otherwise ignored, see below).&lt;br /&gt;
This initializes the programID for launching [[FIRM]], then triggers launching [[FIRM]]. With New3DS kernel, it forces the firm title ID to be the New3DS NATIVE_FIRM, when the input firm title ID is 2. The high firm title ID is always set to 0x40138. On New3DS, the kernel disables the additional New3DS cache hw prior to calling the firmlaunch function from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Powers down the GPU and syncs with Process9 (waits for &amp;lt;code&amp;gt;*(vu8 *)PXI_SYNC11&amp;lt;/code&amp;gt; to be 1) during the process.&lt;br /&gt;
On New3DS, the kernel disables the additional New3DS cache hw, when it&#039;s actually enabled, prior to executing the rest of the code from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;0, void* address&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
This used for initializing the 0x1000-byte buffer used by the launched [[FIRM]]. When the first parameter is 1, this buffer is copied to the beginning of FCRAM at 0xE0000000. When it is 0, this kernel buffer is mapped to the process address specified by the second argument.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| This unmaps(?) the following virtual memory by writing value physaddr (where physaddr base is 0x80000000) to the L1 MMU table entries: 0x00300000..0x04300000, 0x08000000..0x0FE00000, and 0x10000000..0xF8000000.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Used by kernelpanic. This makes core0 enter a WFI/B infinite loop. Threads that were created on core1 or core2 have their priority set to 0x3F, except if the thread was created on core1 and whose parent process (if any) has the &amp;quot;Runnable on sleep&amp;quot; [[NCCH/Extended_Header#ARM11_Kernel_Flags|ARM11 kernel flag]] set. Core1 threads with a priority of 0x40 without a parent process have their priority set to 0x3E.&lt;br /&gt;
&lt;br /&gt;
Prior to first invoking this handler, the global variable holding &amp;lt;code&amp;gt;UNITINFO != 0&amp;lt;/code&amp;gt; is true, and if there is no [[LCD_Registers#Fill_Color|LCD fill]] set at the time kernelpanic is called, kernelpanic fills the top screen with red and the bottom screen with either yellow (if the current process was running under the APPLICATION memregion) or red. &lt;br /&gt;
&lt;br /&gt;
Before invoking this handler a second time, kernelpanic wait for the user to hold L+R+Start+Select down.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;u32 what, u64 val&amp;lt;/code&amp;gt;&lt;br /&gt;
UNITINFO needs to be non-zero. &lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;what&amp;lt;/code&amp;gt; is 0 or any invalid value, nothing is done. &lt;br /&gt;
&lt;br /&gt;
If it is 1, &amp;lt;code&amp;gt;val != 0&amp;lt;/code&amp;gt; is written to the global variable enabling ERR:F-format register dumps on user-mode CPU/VFP exceptions (the VFP exception handler acts as if this variable was always true and works on retail environments). The user handler, stack pointer to use for exception handling, and pointer to use for the exception info structure are contiguously located in either the thread&#039;s TLS, or if the handler is NULL, in the main thread&#039;s TLS, at offset 0x40. If the specified stack pointer is 1, sp_usr - 0x5c is used instead; if the specified exception info buffer is 1, sp_usr - 0x5c is used instead, and if it is 0, &amp;lt;specified stack&amp;gt; - 0x5c is used (0x5c is the size of the exception info structure that is being pushed). Configured by NS on startup on dev-units (default being 0 on non-debugger/jtag units).&lt;br /&gt;
&lt;br /&gt;
If 2, kernelpanic will be called when svcBreak is used by a non-attached process. Configured by NS on startup on dev-units (default being 0 on non-debugger/jtag units).&lt;br /&gt;
&lt;br /&gt;
If 3, this changes the scheduling/preemption mode (when no threads are being preempted, otherwise returns error 0xC8A01414), see [[KResourceLimit]] for more details.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| This triggers an MCU (hard) reboot. This reboot is triggered via device address 0x4A on the second [[I2C]] bus (the MCU). Register address 0x20 is written to with value 4. This code will not return.&lt;br /&gt;
On New3DS, the kernel disables the additional New3DS cache hw prior to calling the reboot function from the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Alternate FIRM launch code-path, with different [[PXI]] FIFO word constants. Usually not used. PTM-sysmodule can use this but it&#039;s unknown what exactly triggers that in PTM-sysmodule.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Yes, implemented at some point after system-version v4.5.&lt;br /&gt;
| ?&lt;br /&gt;
| Argumens: &amp;lt;code&amp;gt;u64 titleID&amp;lt;/code&amp;gt;.&lt;br /&gt;
When creating a process, if the process has a non-zero TID equal to the parameter above (which is stored in a global variable), then KProcessHwInfo+0x32 (&amp;quot;process is the currently running app&amp;quot;) is set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
Used by NS conditionally based on the contents of the [[NS CFA]].&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
| Arguments: &amp;lt;code&amp;gt;u32 config&amp;lt;/code&amp;gt;&lt;br /&gt;
ConfigureNew3DSCPU. Only available for the [[New_3DS]] kernel. The actual code for processing this runs under the &amp;lt;handler for the KernelSetState-types called via funcptr&amp;gt;, which runs on all ARM11 cores. Only bit0-1 of the argument are used here. Bit 0 enables higher core clock, and bit 1 enables additional (L2) cache. This configures the hardware [[PDN_Registers|register]] for the flags listed [[NCCH/Extended_Header#Flag1|here]], among other code which uses the MPCore private memory region registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetSystemInfo =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  SystemInfoType value&lt;br /&gt;
!  s32 param&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| This writes the total used memory size in the following memory regions to out: APPLICATION, SYSTEM, and BASE.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| This writes the total used memory size in the APPLICATION memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| This writes the total used memory size in the SYSTEM memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
| This writes the total used memory size in the BASE memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the FCRAM memory [[Memory_Allocation#FCRAM_Region_Data|used by the kernel]] to out.&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the total number of threads which were directly launched by the kernel, to out. No longer exists with some kernel version?&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the total number of processes which were directly launched by the kernel, to out. For the NATIVE_FIRM/SAFE_MODE_FIRM ARM11 kernel, this is normally 5, for processes sm, fs, pm, loader, and pxi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetProcessInfo =&lt;br /&gt;
Input:&lt;br /&gt;
 R0 = unused&lt;br /&gt;
 R1 = Handle process&lt;br /&gt;
 R2 = ProcessInfoType type&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
 R0 = Result&lt;br /&gt;
 R1 = output value lower word&lt;br /&gt;
 R2 = output value upper word&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  ProcessInfoType value&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of executable memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of &amp;lt;unknown&amp;gt; memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of DMA-able (code, data, IO pages, etc.) memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount of &amp;lt;unknown&amp;gt; memory allocated to the process + thread context size + page-rounded size of the external handle table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| Returns the amount handles in use by the process.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| Returns the highest count of handles that have been open at once by the process&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &lt;br /&gt;
| Returns &amp;lt;code&amp;gt;*(u32*)(KProcess+0x234)&amp;lt;/code&amp;gt; which is always 0&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &lt;br /&gt;
| Returns 0&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &lt;br /&gt;
| Returns the maximum number of threads which can be opened by this process (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 9-18&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| This only returns error 0xD8E007ED.&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| Stub: [[8.0.0-18]]. Implementation: [[11.3.0-36|11.3.0-X]].&lt;br /&gt;
| Originally this only returned 0xD8E007ED. Now with v11.3 this returns the memregion for the process: out low u32 = [[KProcess]] &amp;quot;Kernel flags from the exheader kernel descriptors&amp;quot; &amp;amp; 0xF00. High out u32 = 0.&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| low u32 = (0x20000000 - &amp;lt;LINEAR virtual-memory base for this process&amp;gt;). That is, the output value is the value which can be added to LINEAR memory vaddrs for converting to physical-memory addrs.&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the maximum amount of VRAM memory allocatable by the process: 0x800000 bytes if the process has already allocated VRAM memory, otherwise 0 (+ error 0xE0E01BF4)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the address of the first chunk of VRAM allocated by this process&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| [[8.0.0-18]]. N3DS only.&lt;br /&gt;
| Returns the amount of VRAM allocated by this process (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetHandleInfo =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  HandleInfoType value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| This returns the time in ticks the KProcess referenced by the handle was created. If a KProcess handle was not given, it will write whatever was in r5, r6 when the svc was called.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Get internal refcount for kernel object (not counting the one this SVC adds internally to operate), and also a boolean if it is 0 (prior to substracting 1, as explained before).&lt;br /&gt;
|-&lt;br /&gt;
| 0x32107&lt;br /&gt;
| Returns (u64) 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= svc7B Backdoor =&lt;br /&gt;
This saves SVC-mode SP+LR on the user-mode stack, then sets the SVC-mode SP to the user-mode SP. This then calls the specified code in SVC-mode. Once the called code returns, this pops the saved SP+LR off the stack for restoring the SVC-mode SP, then returns from the svc7b handler. Note that this svc7b handler does not disable IRQs, if any IRQs/context-switches occur while the SVC-mode SP is set to the user-mode one here, the ARM11-kernel will crash(which hangs the whole ARM11-side system).&lt;br /&gt;
&lt;br /&gt;
= svc 0x59 =&lt;br /&gt;
Implemented with [[11.3.0-36|11.3.0-X]]. Used with GSP module starting with that version. This always returns 0.&lt;br /&gt;
&lt;br /&gt;
When input_flag is not 0x1, it will use value 0x0 internally. When a state field already matches input_flag, this will immediately return. Otherwise, after this SVC finishes running, it will write input_flag to this state field. GSP module uses 0x0 for APPLICATION-memregionid and 0x1 for non-APPLICATION-memregionid.&lt;br /&gt;
&lt;br /&gt;
This writes &amp;quot;&amp;lt;nowiki&amp;gt;0x100 | &amp;lt;val&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot; to [[CONFIG11_Registers#CFG11_GPUPROT|pdnregbase+0x140]], where val depends on input_flag and a kernel state field for [[Configuration_Memory|APPMEMTYPE]].&lt;br /&gt;
&lt;br /&gt;
When input_flag is 0x1 val is fixed:&lt;br /&gt;
* Old3DS: 0x3&lt;br /&gt;
* New3DS: 0x460&lt;br /&gt;
&lt;br /&gt;
Otherwise, val depends on the kernel APPMEMTYPE state field:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  FIRM&lt;br /&gt;
!  [[Memory_layout|APPMEMTYPE]]&lt;br /&gt;
!  val&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 2&lt;br /&gt;
| 0x3&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 3&lt;br /&gt;
| 0x5&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| 4&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS&lt;br /&gt;
| Non-value-{2/3/4}&lt;br /&gt;
| 0x7&lt;br /&gt;
|-&lt;br /&gt;
| New3DS&lt;br /&gt;
| 7&lt;br /&gt;
| 0x490&lt;br /&gt;
|-&lt;br /&gt;
| New3DS&lt;br /&gt;
| Non-value-7&lt;br /&gt;
| 0x4F0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This same register is also initialized during kernel boot starting with [[3.0.0-5]], with the following values:&lt;br /&gt;
* Old3DS: 0x103&lt;br /&gt;
* New3DS: 0x550&lt;br /&gt;
&lt;br /&gt;
= Kernel error-codes =&lt;br /&gt;
See [[Error codes]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Error-code value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x09401BFE&lt;br /&gt;
| Timeout occurred with svcWaitSynchronization*, when timeout is not ~0.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601801&lt;br /&gt;
| No more unused/free synchronization objects left to use in a given object&#039;s linked list.  (KEvent, KMutex, KTimer, KSemaphore, KAddressArbiter, KThread)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601802&lt;br /&gt;
| No more unused/free KSharedMemory objects left to use in the KSharedMemory linked list - out of blocks&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8601809&lt;br /&gt;
| No more unused/free KSessions left to use in the KSession linked list - out of sessions&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860180A&lt;br /&gt;
| Not enough free memory available for memory allocation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920181A&lt;br /&gt;
| The session was closed by the other process..&lt;br /&gt;
|-&lt;br /&gt;
| 0xD0401834&lt;br /&gt;
| Max connections to port have been exceeded&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8609013&lt;br /&gt;
| Unknown, probably reslimit related?&lt;br /&gt;
|-&lt;br /&gt;
| 0xD88007FA&lt;br /&gt;
| Returned if no KObjectName object in the linked list  of such objects matches the port name provided to the svc. &lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007ED&lt;br /&gt;
| This indicates that a value is outside of the enum being used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007F1&lt;br /&gt;
| This error indicates Misaligned address.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007F7&lt;br /&gt;
| This error indicates that the input handle used with the SVC does not exist in the process handle-table, or that the handle kernel object type does not match the type used by the SVC.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9000402&lt;br /&gt;
| Invalid memory permissions for input/output buffers, for svcStartInterProcessDma.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9001814&lt;br /&gt;
| Failed unprivileged load or store - wrong permissions on memory&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9001BF7&lt;br /&gt;
| This error is returned when the kernel retrieves a pointer to a kernel object, but the object type doesn&#039;t match the desired one.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD92007EA&lt;br /&gt;
| This error is returned when a process attempts to use svcCreateMemoryBlock when the process memorytype is the application memorytype, and when addr=0.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E01BF5&lt;br /&gt;
| This indicates an invalid address was used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF8C007F4&lt;br /&gt;
| Invalid type/param0-param3 input for svcKernelSetState. This is also returned for those syscalls marked as stubs.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19813</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19813"/>
		<updated>2017-04-08T10:58:34Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19812</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19812"/>
		<updated>2017-04-08T10:57:01Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19811</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19811"/>
		<updated>2017-04-08T10:52:26Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19810</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19810"/>
		<updated>2017-04-08T10:50:05Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19809</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19809"/>
		<updated>2017-04-08T10:49:03Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19808</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19808"/>
		<updated>2017-04-08T10:46:59Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19807</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19807"/>
		<updated>2017-04-08T10:45:42Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: Reverted edits by Plutooo (talk) to last revision by Fincs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19806</id>
		<title>GPU/Internal Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Internal_Registers&amp;diff=19806"/>
		<updated>2017-04-08T10:44:34Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GPU]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
GPU internal registers are written to through GPU commands. They are used to control the GPU&#039;s behavior, that is to say tell it to draw stuff and how we want it drawn.&lt;br /&gt;
&lt;br /&gt;
Each command is at least 8 bytes wide. The first word is the command parameter and the second word constitutes the command header. Optionally, more parameter words may follow (potentially including a padding word to align commands to multiples of 8 bytes).&lt;br /&gt;
&lt;br /&gt;
In the simplest case, a command is exactly 8 bytes wide. You can think of such a command as writing the parameter word to an internal register (the index of which is given in the command header). The more general case where more than one parameter word is given is equivalent to multiple simple commands (one for each parameter word). If consecutive writing mode is enabled in the command header, the current command index will be incremented after each parameter write. Otherwise, the parameters will be consecutively written to the same register.&lt;br /&gt;
&lt;br /&gt;
For example, the sequence &amp;quot;0xAAAAAAAA 0x802F011C 0xBBBBBBBB 0xCCCCCCCC&amp;quot; is equivalent to a call to commands 0xF011C with parameter 0xAAAAAAAA, 0xF011D with parameter 0xBBBBBBBB and 0xF011E with parameter 0xCCCCCCCC. If consecutive writing mode were disabled, the command would be equivalent to three consecutive calls to 0xF011C (once with parameter 0xAAAAAAAA, once with 0xBBBBBBBB, and finally with 0xCCCCCCCC).&lt;br /&gt;
&lt;br /&gt;
Invalid GPU command parameters including NaN floats can cause the GPU to hang, which then causes the GSP module to hang as well.&lt;br /&gt;
&lt;br /&gt;
The size of GPU command buffers must be 0x10-byte aligned; the lower 3 bits of the size are cleared. A common pitfall is having the finalization command (write to register 0x0010) not executed because it was the last 8 bytes of a non-0x10 byte aligned command buffer, and having the GPU hang as a result.&lt;br /&gt;
&lt;br /&gt;
=== Command Header ===&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;
| 0-15&lt;br /&gt;
| Command ID&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| Parameter mask&lt;br /&gt;
|-&lt;br /&gt;
| 20-30&lt;br /&gt;
| Number of extra parameters (may be zero)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Consecutive writing mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parameter masking ===&lt;br /&gt;
&lt;br /&gt;
Using a value other than 0xF, parts of a word in internal GPU memory can be updated without touching the other bits of it. For example, setting bit 16 to zero indicates that the least significant byte of the parameter will not be overwritten, setting bit 17 to zero indicates that the parameter&#039;s second LSB will not be overwritten, etc. This means that for instance commands 0x00010107 and 0x00020107 refer to the same thing but write different parts of the parameter.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
There are three main types of registers :&lt;br /&gt;
* configuration registers, which directly map to various rendering properties (for example: [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])&lt;br /&gt;
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example: [[#GPUREG_SH_CODETRANSFER_DATA|GPUREG_GSH_CODETRANSFER_DATA]])&lt;br /&gt;
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example: [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])&lt;br /&gt;
&lt;br /&gt;
=== Aliases ===&lt;br /&gt;
&lt;br /&gt;
It is possible for multiple register (sequential) IDs to correspond to the same register. This is done to leverage the consecutive writing mode for GPU commands, which makes it possible for a single command to write data to multiple sequential register IDs. For example, register IDs 02C1 through 02C8 all correspond to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]] so that a consecutively writing command based at 02C0 will write its first parameter to [[#GPUREG_VSH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]] and ever subsequent ones to [[#GPUREG_VSH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Data Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| signed&lt;br /&gt;
| Signed integer&lt;br /&gt;
|-&lt;br /&gt;
| unsigned&lt;br /&gt;
| Unsigned integer&lt;br /&gt;
|-&lt;br /&gt;
| floatX.Y.Z&lt;br /&gt;
| Floating-point number with X sign bits, Y exponent bits, and Z mantissa bits&lt;br /&gt;
|-&lt;br /&gt;
| fixedX.Y.Z&lt;br /&gt;
| Fixed-point number with X sign bits, Y integer bits, and Z fractional bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Register list ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous registers (0x000-0x03F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0000&lt;br /&gt;
| [[#GPUREG_0000|GPUREG_0000]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0001&lt;br /&gt;
| [[#GPUREG_0001|GPUREG_0001]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0002&lt;br /&gt;
| [[#GPUREG_0002|GPUREG_0002]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0003&lt;br /&gt;
| [[#GPUREG_0003|GPUREG_0003]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0004&lt;br /&gt;
| [[#GPUREG_0004|GPUREG_0004]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0005&lt;br /&gt;
| [[#GPUREG_0005|GPUREG_0005]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0006&lt;br /&gt;
| [[#GPUREG_0006|GPUREG_0006]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0007&lt;br /&gt;
| [[#GPUREG_0007|GPUREG_0007]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0008&lt;br /&gt;
| [[#GPUREG_0008|GPUREG_0008]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0009&lt;br /&gt;
| [[#GPUREG_0009|GPUREG_0009]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000A&lt;br /&gt;
| [[#GPUREG_000A|GPUREG_000A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000B&lt;br /&gt;
| [[#GPUREG_000B|GPUREG_000B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000C&lt;br /&gt;
| [[#GPUREG_000C|GPUREG_000C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000D&lt;br /&gt;
| [[#GPUREG_000D|GPUREG_000D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000E&lt;br /&gt;
| [[#GPUREG_000E|GPUREG_000E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 000F&lt;br /&gt;
| [[#GPUREG_000F|GPUREG_000F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0010&lt;br /&gt;
| [[#GPUREG_FINALIZE|GPUREG_FINALIZE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INTERRUPT&lt;br /&gt;
|-&lt;br /&gt;
| 0011&lt;br /&gt;
| [[#GPUREG_0011|GPUREG_0011]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0012&lt;br /&gt;
| [[#GPUREG_0012|GPUREG_0012]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0013&lt;br /&gt;
| [[#GPUREG_0013|GPUREG_0013]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0014&lt;br /&gt;
| [[#GPUREG_0014|GPUREG_0014]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0015&lt;br /&gt;
| [[#GPUREG_0015|GPUREG_0015]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0016&lt;br /&gt;
| [[#GPUREG_0016|GPUREG_0016]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0017&lt;br /&gt;
| [[#GPUREG_0017|GPUREG_0017]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0018&lt;br /&gt;
| [[#GPUREG_0018|GPUREG_0018]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0019&lt;br /&gt;
| [[#GPUREG_0019|GPUREG_0019]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001A&lt;br /&gt;
| [[#GPUREG_001A|GPUREG_001A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001B&lt;br /&gt;
| [[#GPUREG_001B|GPUREG_001B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001C&lt;br /&gt;
| [[#GPUREG_001C|GPUREG_001C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001D&lt;br /&gt;
| [[#GPUREG_001D|GPUREG_001D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001E&lt;br /&gt;
| [[#GPUREG_001E|GPUREG_001E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 001F&lt;br /&gt;
| [[#GPUREG_001F|GPUREG_001F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0020&lt;br /&gt;
| [[#GPUREG_0020|GPUREG_0020]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0021&lt;br /&gt;
| [[#GPUREG_0021|GPUREG_0021]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0022&lt;br /&gt;
| [[#GPUREG_0022|GPUREG_0022]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0023&lt;br /&gt;
| [[#GPUREG_0023|GPUREG_0023]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0024&lt;br /&gt;
| [[#GPUREG_0024|GPUREG_0024]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0025&lt;br /&gt;
| [[#GPUREG_0025|GPUREG_0025]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0026&lt;br /&gt;
| [[#GPUREG_0026|GPUREG_0026]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0027&lt;br /&gt;
| [[#GPUREG_0027|GPUREG_0027]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0028&lt;br /&gt;
| [[#GPUREG_0028|GPUREG_0028]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0029&lt;br /&gt;
| [[#GPUREG_0029|GPUREG_0029]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002A&lt;br /&gt;
| [[#GPUREG_002A|GPUREG_002A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002B&lt;br /&gt;
| [[#GPUREG_002B|GPUREG_002B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002C&lt;br /&gt;
| [[#GPUREG_002C|GPUREG_002C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002D&lt;br /&gt;
| [[#GPUREG_002D|GPUREG_002D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002E&lt;br /&gt;
| [[#GPUREG_002E|GPUREG_002E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 002F&lt;br /&gt;
| [[#GPUREG_002F|GPUREG_002F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0030&lt;br /&gt;
| [[#GPUREG_0030|GPUREG_0030]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0031&lt;br /&gt;
| [[#GPUREG_0031|GPUREG_0031]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0032&lt;br /&gt;
| [[#GPUREG_0032|GPUREG_0032]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0033&lt;br /&gt;
| [[#GPUREG_0033|GPUREG_0033]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0034&lt;br /&gt;
| [[#GPUREG_0034|GPUREG_0034]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0035&lt;br /&gt;
| [[#GPUREG_0035|GPUREG_0035]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0036&lt;br /&gt;
| [[#GPUREG_0036|GPUREG_0036]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0037&lt;br /&gt;
| [[#GPUREG_0037|GPUREG_0037]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0038&lt;br /&gt;
| [[#GPUREG_0038|GPUREG_0038]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0039&lt;br /&gt;
| [[#GPUREG_0039|GPUREG_0039]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003A&lt;br /&gt;
| [[#GPUREG_003A|GPUREG_003A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003B&lt;br /&gt;
| [[#GPUREG_003B|GPUREG_003B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003C&lt;br /&gt;
| [[#GPUREG_003C|GPUREG_003C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003D&lt;br /&gt;
| [[#GPUREG_003D|GPUREG_003D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003E&lt;br /&gt;
| [[#GPUREG_003E|GPUREG_003E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 003F&lt;br /&gt;
| [[#GPUREG_003F|GPUREG_003F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rasterizer registers (0x040-0x07F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0040&lt;br /&gt;
| [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_CULL_FACE&lt;br /&gt;
|-&lt;br /&gt;
| 0041&lt;br /&gt;
| [[#GPUREG_VIEWPORT_WIDTH|GPUREG_VIEWPORT_WIDTH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH1&lt;br /&gt;
|-&lt;br /&gt;
| 0042&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVW|GPUREG_VIEWPORT_INVW]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_WIDTH2&lt;br /&gt;
|-&lt;br /&gt;
| 0043&lt;br /&gt;
| [[#GPUREG_VIEWPORT_HEIGHT|GPUREG_VIEWPORT_HEIGHT]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT1&lt;br /&gt;
|-&lt;br /&gt;
| 0044&lt;br /&gt;
| [[#GPUREG_VIEWPORT_INVH|GPUREG_VIEWPORT_INVH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_HEIGHT2&lt;br /&gt;
|-&lt;br /&gt;
| 0045&lt;br /&gt;
| [[#GPUREG_0045|GPUREG_0045]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0046&lt;br /&gt;
| [[#GPUREG_0046|GPUREG_0046]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0047&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP|GPUREG_FRAGOP_CLIP]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP&lt;br /&gt;
|-&lt;br /&gt;
| 0048&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA0]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0049&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004A&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 004B&lt;br /&gt;
| [[#GPUREG_FRAGOP_CLIP_DATAi|GPUREG_FRAGOP_CLIP_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_CLIP_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 004C&lt;br /&gt;
| [[#GPUREG_004C|GPUREG_004C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 004D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_SCALE|GPUREG_DEPTHMAP_SCALE]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 004E&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_OFFSET|GPUREG_DEPTHMAP_OFFSET]]&lt;br /&gt;
| As f24&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 004F&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_TOTAL|GPUREG_SH_OUTMAP_TOTAL]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 0050&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0&lt;br /&gt;
|-&lt;br /&gt;
| 0051&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1&lt;br /&gt;
|-&lt;br /&gt;
| 0052&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2&lt;br /&gt;
|-&lt;br /&gt;
| 0053&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3&lt;br /&gt;
|-&lt;br /&gt;
| 0054&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4&lt;br /&gt;
|-&lt;br /&gt;
| 0055&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5&lt;br /&gt;
|-&lt;br /&gt;
| 0056&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_Oi|GPUREG_SH_OUTMAP_O6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6&lt;br /&gt;
|-&lt;br /&gt;
| 0057&lt;br /&gt;
| [[#GPUREG_0057|GPUREG_0057]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0058&lt;br /&gt;
| [[#GPUREG_0058|GPUREG_0058]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0059&lt;br /&gt;
| [[#GPUREG_0059|GPUREG_0059]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005A&lt;br /&gt;
| [[#GPUREG_005A|GPUREG_005A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005B&lt;br /&gt;
| [[#GPUREG_005B|GPUREG_005B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005C&lt;br /&gt;
| [[#GPUREG_005C|GPUREG_005C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005D&lt;br /&gt;
| [[#GPUREG_005D|GPUREG_005D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005E&lt;br /&gt;
| [[#GPUREG_005E|GPUREG_005E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 005F&lt;br /&gt;
| [[#GPUREG_005F|GPUREG_005F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0060&lt;br /&gt;
| [[#GPUREG_0060|GPUREG_0060]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0061&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_FUNC|GPUREG_EARLYDEPTH_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0062&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST1|GPUREG_EARLYDEPTH_TEST1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST1&lt;br /&gt;
|-&lt;br /&gt;
| 0063&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_CLEAR|GPUREG_EARLYDEPTH_CLEAR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_EARLY_DEPTH_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0064&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_MODE|GPUREG_SH_OUTATTR_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0065&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_MODE|GPUREG_SCISSORTEST_MODE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR&lt;br /&gt;
|-&lt;br /&gt;
| 0066&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_POS|GPUREG_SCISSORTEST_POS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0067&lt;br /&gt;
| [[#GPUREG_SCISSORTEST_DIM|GPUREG_SCISSORTEST_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_SCISSOR_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0068&lt;br /&gt;
| [[#GPUREG_VIEWPORT_XY|GPUREG_VIEWPORT_XY]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_VIEWPORT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0069&lt;br /&gt;
| [[#GPUREG_0069|GPUREG_0069]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006A&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_DATA|GPUREG_EARLYDEPTH_DATA]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 006B&lt;br /&gt;
| [[#GPUREG_006B|GPUREG_006B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006C&lt;br /&gt;
| [[#GPUREG_006C|GPUREG_006C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 006D&lt;br /&gt;
| [[#GPUREG_DEPTHMAP_ENABLE|GPUREG_DEPTHMAP_ENABLE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_WSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 006E&lt;br /&gt;
| [[#GPUREG_RENDERBUF_DIM|GPUREG_RENDERBUF_DIM]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION1&lt;br /&gt;
|-&lt;br /&gt;
| 006F&lt;br /&gt;
| [[#GPUREG_SH_OUTATTR_CLOCK|GPUREG_SH_OUTATTR_CLOCK]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK&lt;br /&gt;
|-&lt;br /&gt;
| 0070&lt;br /&gt;
| [[#GPUREG_0070|GPUREG_0070]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0071&lt;br /&gt;
| [[#GPUREG_0071|GPUREG_0071]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0072&lt;br /&gt;
| [[#GPUREG_0072|GPUREG_0072]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0073&lt;br /&gt;
| [[#GPUREG_0073|GPUREG_0073]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0074&lt;br /&gt;
| [[#GPUREG_0074|GPUREG_0074]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0075&lt;br /&gt;
| [[#GPUREG_0075|GPUREG_0075]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0076&lt;br /&gt;
| [[#GPUREG_0076|GPUREG_0076]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0077&lt;br /&gt;
| [[#GPUREG_0077|GPUREG_0077]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0078&lt;br /&gt;
| [[#GPUREG_0078|GPUREG_0078]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0079&lt;br /&gt;
| [[#GPUREG_0079|GPUREG_0079]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007A&lt;br /&gt;
| [[#GPUREG_007A|GPUREG_007A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007B&lt;br /&gt;
| [[#GPUREG_007B|GPUREG_007B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007C&lt;br /&gt;
| [[#GPUREG_007C|GPUREG_007C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007D&lt;br /&gt;
| [[#GPUREG_007D|GPUREG_007D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007E&lt;br /&gt;
| [[#GPUREG_007E|GPUREG_007E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 007F&lt;br /&gt;
| [[#GPUREG_007F|GPUREG_007F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texturing registers (0x080-0x0FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0080&lt;br /&gt;
| [[#GPUREG_TEXUNIT_CONFIG|GPUREG_TEXUNIT_CONFIG]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0081&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT0_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0082&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT0_DIM]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE0_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0083&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT0_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0084&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT0_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0085&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR1&lt;br /&gt;
|-&lt;br /&gt;
| 0086&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR2&lt;br /&gt;
|-&lt;br /&gt;
| 0087&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR3&lt;br /&gt;
|-&lt;br /&gt;
| 0088&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR4&lt;br /&gt;
|-&lt;br /&gt;
| 0089&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR5&lt;br /&gt;
|-&lt;br /&gt;
| 008A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT0_ADDR6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE0_ADDR6&lt;br /&gt;
|-&lt;br /&gt;
| 008B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_SHADOW|GPUREG_TEXUNIT0_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 008C&lt;br /&gt;
| [[#GPUREG_008C|GPUREG_008C]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008D&lt;br /&gt;
| [[#GPUREG_008D|GPUREG_008D]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 008E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT0_TYPE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE0_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 008F&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE0|GPUREG_LIGHTING_ENABLE0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN0&lt;br /&gt;
|-&lt;br /&gt;
| 0090&lt;br /&gt;
| [[#GPUREG_0090|GPUREG_0090]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0091&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT1_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE1_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0092&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT1_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0093&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT1_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 0094&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT1_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE1_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 0095&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT1_ADDR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0096&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT1_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE1_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0097&lt;br /&gt;
| [[#GPUREG_0097|GPUREG_0097]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0098&lt;br /&gt;
| [[#GPUREG_0098|GPUREG_0098]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0099&lt;br /&gt;
| [[#GPUREG_TEXUNITi_BORDER_COLOR|GPUREG_TEXUNIT2_BORDER_COLOR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_BORDER_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 009A&lt;br /&gt;
| [[#GPUREG_TEXUNITi_DIM|GPUREG_TEXUNIT2_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_SIZE&lt;br /&gt;
|-&lt;br /&gt;
| 009B&lt;br /&gt;
| [[#GPUREG_TEXUNITi_PARAM|GPUREG_TEXUNIT2_PARAM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_WRAP_FILTER&lt;br /&gt;
|-&lt;br /&gt;
| 009C&lt;br /&gt;
| [[#GPUREG_TEXUNITi_LOD|GPUREG_TEXUNIT2_LOD]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE2_LOD&lt;br /&gt;
|-&lt;br /&gt;
| 009D&lt;br /&gt;
| [[#GPUREG_TEXUNITi_ADDRi|GPUREG_TEXUNIT2_ADDR]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_TEXTURE2_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 009E&lt;br /&gt;
| [[#GPUREG_TEXUNITi_TYPE|GPUREG_TEXUNIT2_TYPE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEXTURE2_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 009F&lt;br /&gt;
| [[#GPUREG_009F|GPUREG_009F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A0&lt;br /&gt;
| [[#GPUREG_00A0|GPUREG_00A0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A1&lt;br /&gt;
| [[#GPUREG_00A1|GPUREG_00A1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A2&lt;br /&gt;
| [[#GPUREG_00A2|GPUREG_00A2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A3&lt;br /&gt;
| [[#GPUREG_00A3|GPUREG_00A3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A4&lt;br /&gt;
| [[#GPUREG_00A4|GPUREG_00A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A5&lt;br /&gt;
| [[#GPUREG_00A5|GPUREG_00A5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A6&lt;br /&gt;
| [[#GPUREG_00A6|GPUREG_00A6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A7&lt;br /&gt;
| [[#GPUREG_00A7|GPUREG_00A7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00A8&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX0|GPUREG_TEXUNIT3_PROCTEX0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX0&lt;br /&gt;
|-&lt;br /&gt;
| 00A9&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX1|GPUREG_TEXUNIT3_PROCTEX1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX1&lt;br /&gt;
|-&lt;br /&gt;
| 00AA&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX2|GPUREG_TEXUNIT3_PROCTEX2]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX2&lt;br /&gt;
|-&lt;br /&gt;
| 00AB&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX3|GPUREG_TEXUNIT3_PROCTEX3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX3&lt;br /&gt;
|-&lt;br /&gt;
| 00AC&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX4|GPUREG_TEXUNIT3_PROCTEX4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX4&lt;br /&gt;
|-&lt;br /&gt;
| 00AD&lt;br /&gt;
| [[#GPUREG_TEXUNIT3_PROCTEX5|GPUREG_TEXUNIT3_PROCTEX5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEXTURE3_PROCTEX5&lt;br /&gt;
|-&lt;br /&gt;
| 00AE&lt;br /&gt;
| [[#GPUREG_00AE|GPUREG_00AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00AF&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT|GPUREG_PROCTEX_LUT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 00B0&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA0]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00B1&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA1]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00B2&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA2]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00B3&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA3]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00B4&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA4]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00B5&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA5]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00B6&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA6]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00B7&lt;br /&gt;
| [[#GPUREG_PROCTEX_LUT_DATAi|GPUREG_PROCTEX_LUT_DATA7]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_PROCTEX_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00B8&lt;br /&gt;
| [[#GPUREG_00B8|GPUREG_00B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00B9&lt;br /&gt;
| [[#GPUREG_00B9|GPUREG_00B9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BA&lt;br /&gt;
| [[#GPUREG_00BA|GPUREG_00BA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BB&lt;br /&gt;
| [[#GPUREG_00BB|GPUREG_00BB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BC&lt;br /&gt;
| [[#GPUREG_00BC|GPUREG_00BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BD&lt;br /&gt;
| [[#GPUREG_00BD|GPUREG_00BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BE&lt;br /&gt;
| [[#GPUREG_00BE|GPUREG_00BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00BF&lt;br /&gt;
| [[#GPUREG_00BF|GPUREG_00BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV0_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0&lt;br /&gt;
|-&lt;br /&gt;
| 00C1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV0_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00C2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV0_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00C3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV0_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00C4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV0_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_0_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00C5&lt;br /&gt;
| [[#GPUREG_00C5|GPUREG_00C5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C6&lt;br /&gt;
| [[#GPUREG_00C6|GPUREG_00C6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C7&lt;br /&gt;
| [[#GPUREG_00C7|GPUREG_00C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00C8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV1_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1&lt;br /&gt;
|-&lt;br /&gt;
| 00C9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV1_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00CA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV1_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00CB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV1_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00CC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV1_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_1_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00CD&lt;br /&gt;
| [[#GPUREG_00CD|GPUREG_00CD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CE&lt;br /&gt;
| [[#GPUREG_00CE|GPUREG_00CE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00CF&lt;br /&gt;
| [[#GPUREG_00CF|GPUREG_00CF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV2_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2&lt;br /&gt;
|-&lt;br /&gt;
| 00D1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV2_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00D2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV2_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00D3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV2_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00D4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV2_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_2_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00D5&lt;br /&gt;
| [[#GPUREG_00D5|GPUREG_00D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D6&lt;br /&gt;
| [[#GPUREG_00D6|GPUREG_00D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D7&lt;br /&gt;
| [[#GPUREG_00D7|GPUREG_00D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00D8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV3_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3&lt;br /&gt;
|-&lt;br /&gt;
| 00D9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV3_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00DA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV3_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00DB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV3_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00DC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV3_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_3_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00DD&lt;br /&gt;
| [[#GPUREG_00DD|GPUREG_00DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DE&lt;br /&gt;
| [[#GPUREG_00DE|GPUREG_00DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00DF&lt;br /&gt;
| [[#GPUREG_00DF|GPUREG_00DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E0&lt;br /&gt;
| [[#GPUREG_TEXENV_UPDATE_BUFFER|GPUREG_TEXENV_UPDATE_BUFFER]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 00E1&lt;br /&gt;
| [[#GPUREG_FOG_COLOR|GPUREG_FOG_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00E2&lt;br /&gt;
| [[#GPUREG_00E2|GPUREG_00E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E3&lt;br /&gt;
| [[#GPUREG_00E3|GPUREG_00E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E4&lt;br /&gt;
| [[#GPUREG_GAS_ATTENUATION|GPUREG_GAS_ATTENUATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ATTENUATION&lt;br /&gt;
|-&lt;br /&gt;
| 00E5&lt;br /&gt;
| [[#GPUREG_GAS_ACCMAX|GPUREG_GAS_ACCMAX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_ACCMAX&lt;br /&gt;
|-&lt;br /&gt;
| 00E6&lt;br /&gt;
| [[#GPUREG_FOG_LUT_INDEX|GPUREG_FOG_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 00E7&lt;br /&gt;
| [[#GPUREG_00E7|GPUREG_00E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00E8&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 00E9&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA1]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FOG_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 00EA&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 00EB&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 00EC&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 00ED&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 00EE&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 00EF&lt;br /&gt;
| [[#GPUREG_FOG_LUT_DATAi|GPUREG_FOG_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FOG_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 00F0&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV4_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4&lt;br /&gt;
|-&lt;br /&gt;
| 00F1&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV4_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00F2&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV4_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00F3&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV4_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00F4&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV4_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_4_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00F5&lt;br /&gt;
| [[#GPUREG_00F5|GPUREG_00F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F6&lt;br /&gt;
| [[#GPUREG_00F6|GPUREG_00F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F7&lt;br /&gt;
| [[#GPUREG_00F7|GPUREG_00F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00F8&lt;br /&gt;
| [[#GPUREG_TEXENVi_SOURCE|GPUREG_TEXENV5_SOURCE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5&lt;br /&gt;
|-&lt;br /&gt;
| 00F9&lt;br /&gt;
| [[#GPUREG_TEXENVi_OPERAND|GPUREG_TEXENV5_OPERAND]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_OPERAND&lt;br /&gt;
|-&lt;br /&gt;
| 00FA&lt;br /&gt;
| [[#GPUREG_TEXENVi_COMBINER|GPUREG_TEXENV5_COMBINER]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COMBINE&lt;br /&gt;
|-&lt;br /&gt;
| 00FB&lt;br /&gt;
| [[#GPUREG_TEXENVi_COLOR|GPUREG_TEXENV5_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FC&lt;br /&gt;
| [[#GPUREG_TEXENVi_SCALE|GPUREG_TEXENV5_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_TEX_ENV_5_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 00FD&lt;br /&gt;
| [[#GPUREG_TEXENV_BUFFER_COLOR|GPUREG_TEXENV_BUFFER_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_TEX_ENV_BUF_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 00FE&lt;br /&gt;
| [[#GPUREG_00FE|GPUREG_00FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 00FF&lt;br /&gt;
| [[#GPUREG_00FF|GPUREG_00FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer registers (0x100-0x13F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0100&lt;br /&gt;
| [[#GPUREG_COLOR_OPERATION|GPUREG_COLOR_OPERATION]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_OPERATION&lt;br /&gt;
|-&lt;br /&gt;
| 0101&lt;br /&gt;
| [[#GPUREG_BLEND_FUNC|GPUREG_BLEND_FUNC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0102&lt;br /&gt;
| [[#GPUREG_LOGIC_OP|GPUREG_LOGIC_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOGIC_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0103&lt;br /&gt;
| [[#GPUREG_BLEND_COLOR|GPUREG_BLEND_COLOR]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_BLEND_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0104&lt;br /&gt;
| [[#GPUREG_FRAGOP_ALPHA_TEST|GPUREG_FRAGOP_ALPHA_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAGOP_ALPHA_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0105&lt;br /&gt;
| [[#GPUREG_STENCIL_TEST|GPUREG_STENCIL_TEST]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_TEST&lt;br /&gt;
|-&lt;br /&gt;
| 0106&lt;br /&gt;
| [[#GPUREG_STENCIL_OP|GPUREG_STENCIL_OP]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_STENCIL_OP&lt;br /&gt;
|-&lt;br /&gt;
| 0107&lt;br /&gt;
| [[#GPUREG_DEPTH_COLOR_MASK|GPUREG_DEPTH_COLOR_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_COLOR_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 0108&lt;br /&gt;
| [[#GPUREG_0108|GPUREG_0108]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0109&lt;br /&gt;
| [[#GPUREG_0109|GPUREG_0109]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010A&lt;br /&gt;
| [[#GPUREG_010A|GPUREG_010A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010B&lt;br /&gt;
| [[#GPUREG_010B|GPUREG_010B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010C&lt;br /&gt;
| [[#GPUREG_010C|GPUREG_010C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010D&lt;br /&gt;
| [[#GPUREG_010D|GPUREG_010D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010E&lt;br /&gt;
| [[#GPUREG_010E|GPUREG_010E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 010F&lt;br /&gt;
| [[#GPUREG_010F|GPUREG_010F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0110&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_INVALIDATE|GPUREG_FRAMEBUFFER_INVALIDATE]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0111&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_FLUSH|GPUREG_FRAMEBUFFER_FLUSH]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_COLOR_BUFFER_CLEAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0112&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_READ|GPUREG_COLORBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0113&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_WRITE|GPUREG_COLORBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COLOR_BUFFER_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0114&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_READ|GPUREG_DEPTHBUFFER_READ]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_READ&lt;br /&gt;
|-&lt;br /&gt;
| 0115&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_WRITE|GPUREG_DEPTHBUFFER_WRITE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DEPTH_STENCIL_WRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0116&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_FORMAT|GPUREG_DEPTHBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0117&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_FORMAT|GPUREG_COLORBUFFER_FORMAT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0118&lt;br /&gt;
| [[#GPUREG_EARLYDEPTH_TEST2|GPUREG_EARLYDEPTH_TEST2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_EARLY_DEPTH_TEST2&lt;br /&gt;
|-&lt;br /&gt;
| 0119&lt;br /&gt;
| [[#GPUREG_0119|GPUREG_0119]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011A&lt;br /&gt;
| [[#GPUREG_011A|GPUREG_011A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 011B&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_BLOCK32|GPUREG_FRAMEBUFFER_BLOCK32]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BLOCK_FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 011C&lt;br /&gt;
| [[#GPUREG_DEPTHBUFFER_LOC|GPUREG_DEPTHBUFFER_LOC]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_RENDER_BUF_DEPTH_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011D&lt;br /&gt;
| [[#GPUREG_COLORBUFFER_LOC|GPUREG_COLORBUFFER_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_COLOR_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 011E&lt;br /&gt;
| [[#GPUREG_FRAMEBUFFER_DIM|GPUREG_FRAMEBUFFER_DIM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_RENDER_BUF_RESOLUTION0&lt;br /&gt;
|-&lt;br /&gt;
| 011F&lt;br /&gt;
| [[#GPUREG_011F|GPUREG_011F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0120&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_XY|GPUREG_GAS_LIGHT_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0121&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z|GPUREG_GAS_LIGHT_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0122&lt;br /&gt;
| [[#GPUREG_GAS_LIGHT_Z_COLOR|GPUREG_GAS_LIGHT_Z_COLOR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LIGHT_Z_COLOR&lt;br /&gt;
|-&lt;br /&gt;
| 0123&lt;br /&gt;
| [[#GPUREG_GAS_LUT_INDEX|GPUREG_GAS_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| 0124&lt;br /&gt;
| [[#GPUREG_GAS_LUT_DATA|GPUREG_GAS_LUT_DATA]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_LUT_DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0125&lt;br /&gt;
| [[#GPUREG_0125|GPUREG_0125]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0126&lt;br /&gt;
| [[#GPUREG_GAS_DELTAZ_DEPTH|GPUREG_GAS_DELTAZ_DEPTH]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GAS_DELTAZ_DEPTH&lt;br /&gt;
|-&lt;br /&gt;
| 0127&lt;br /&gt;
| [[#GPUREG_0127|GPUREG_0127]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0128&lt;br /&gt;
| [[#GPUREG_0128|GPUREG_0128]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0129&lt;br /&gt;
| [[#GPUREG_0129|GPUREG_0129]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012A&lt;br /&gt;
| [[#GPUREG_012A|GPUREG_012A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012B&lt;br /&gt;
| [[#GPUREG_012B|GPUREG_012B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012C&lt;br /&gt;
| [[#GPUREG_012C|GPUREG_012C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012D&lt;br /&gt;
| [[#GPUREG_012D|GPUREG_012D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012E&lt;br /&gt;
| [[#GPUREG_012E|GPUREG_012E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 012F&lt;br /&gt;
| [[#GPUREG_012F|GPUREG_012F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0130&lt;br /&gt;
| [[#GPUREG_FRAGOP_SHADOW|GPUREG_FRAGOP_SHADOW]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAGOP_SHADOW&lt;br /&gt;
|-&lt;br /&gt;
| 0131&lt;br /&gt;
| [[#GPUREG_0131|GPUREG_0131]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0132&lt;br /&gt;
| [[#GPUREG_0132|GPUREG_0132]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0133&lt;br /&gt;
| [[#GPUREG_0133|GPUREG_0133]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0134&lt;br /&gt;
| [[#GPUREG_0134|GPUREG_0134]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0135&lt;br /&gt;
| [[#GPUREG_0135|GPUREG_0135]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0136&lt;br /&gt;
| [[#GPUREG_0136|GPUREG_0136]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0137&lt;br /&gt;
| [[#GPUREG_0137|GPUREG_0137]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0138&lt;br /&gt;
| [[#GPUREG_0138|GPUREG_0138]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0139&lt;br /&gt;
| [[#GPUREG_0139|GPUREG_0139]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013A&lt;br /&gt;
| [[#GPUREG_013A|GPUREG_013A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013B&lt;br /&gt;
| [[#GPUREG_013B|GPUREG_013B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013C&lt;br /&gt;
| [[#GPUREG_013C|GPUREG_013C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013D&lt;br /&gt;
| [[#GPUREG_013D|GPUREG_013D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013E&lt;br /&gt;
| [[#GPUREG_013E|GPUREG_013E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 013F&lt;br /&gt;
| [[#GPUREG_013F|GPUREG_013F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Fragment lighting registers (0x140-0x1FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0140&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT0_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START&lt;br /&gt;
|-&lt;br /&gt;
| 0141&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT0_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0142&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT0_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0143&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT0_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0144&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT0_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0145&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT0_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0146&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT0_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0147&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT0_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0148&lt;br /&gt;
| [[#GPUREG_0148|GPUREG_0148]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0149&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT0_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 014A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT0_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 014B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT0_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 014C&lt;br /&gt;
| [[#GPUREG_014C|GPUREG_014C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014D&lt;br /&gt;
| [[#GPUREG_014D|GPUREG_014D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014E&lt;br /&gt;
| [[#GPUREG_014E|GPUREG_014E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 014F&lt;br /&gt;
| [[#GPUREG_014F|GPUREG_014F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0150&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT1_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0151&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT1_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0152&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT1_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0153&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT1_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0154&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT1_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0155&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT1_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0156&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT1_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0157&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT1_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0158&lt;br /&gt;
| [[#GPUREG_0158|GPUREG_0158]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0159&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT1_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 015A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT1_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 015B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT1_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 015C&lt;br /&gt;
| [[#GPUREG_015C|GPUREG_015C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015D&lt;br /&gt;
| [[#GPUREG_015D|GPUREG_015D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015E&lt;br /&gt;
| [[#GPUREG_015E|GPUREG_015E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 015F&lt;br /&gt;
| [[#GPUREG_015F|GPUREG_015F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0160&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT2_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0161&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT2_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0162&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT2_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0163&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT2_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0164&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT2_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0165&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT2_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0166&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT2_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0167&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT2_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0168&lt;br /&gt;
| [[#GPUREG_0168|GPUREG_0168]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0169&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT2_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 016A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT2_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 016B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT2_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 016C&lt;br /&gt;
| [[#GPUREG_016C|GPUREG_016C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016D&lt;br /&gt;
| [[#GPUREG_016D|GPUREG_016D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016E&lt;br /&gt;
| [[#GPUREG_016E|GPUREG_016E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 016F&lt;br /&gt;
| [[#GPUREG_016F|GPUREG_016F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0170&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT3_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0171&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT3_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0172&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT3_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0173&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT3_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0174&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT3_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0175&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT3_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0176&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT3_SPOTDIR_XY]]&lt;br /&gt;
|? &lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0177&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT3_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0178&lt;br /&gt;
| [[#GPUREG_0178|GPUREG_0178]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0179&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT3_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 017A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT3_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 017B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT3_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 017C&lt;br /&gt;
| [[#GPUREG_017C|GPUREG_017C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017D&lt;br /&gt;
| [[#GPUREG_017D|GPUREG_017D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017E&lt;br /&gt;
| [[#GPUREG_017E|GPUREG_017E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 017F&lt;br /&gt;
| [[#GPUREG_017F|GPUREG_017F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0180&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT4_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0181&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT4_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0182&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT4_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0183&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT4_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0184&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT4_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0185&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT4_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0186&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT4_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0187&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT4_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0188&lt;br /&gt;
| [[#GPUREG_0188|GPUREG_0188]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0189&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT4_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 018A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT4_ATTENUATION_BIAS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 018B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT4_ATTENUATION_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 018C&lt;br /&gt;
| [[#GPUREG_018C|GPUREG_018C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018D&lt;br /&gt;
| [[#GPUREG_018D|GPUREG_018D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018E&lt;br /&gt;
| [[#GPUREG_018E|GPUREG_018E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 018F&lt;br /&gt;
| [[#GPUREG_018F|GPUREG_018F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0190&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT5_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 0191&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT5_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 0192&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT5_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0193&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT5_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 0194&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT5_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0195&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT5_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0196&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT5_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 0197&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT5_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 0198&lt;br /&gt;
| [[#GPUREG_0198|GPUREG_0198]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0199&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT5_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 019A&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT5_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 019B&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT5_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 019C&lt;br /&gt;
| [[#GPUREG_019C|GPUREG_019C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019D&lt;br /&gt;
| [[#GPUREG_019D|GPUREG_019D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019E&lt;br /&gt;
| [[#GPUREG_019E|GPUREG_019E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 019F&lt;br /&gt;
| [[#GPUREG_019F|GPUREG_019F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT6_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01A1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT6_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01A2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT6_DIFFUSE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01A3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT6_AMBIENT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01A4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT6_XY]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT6_Z]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT6_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01A7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT6_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01A8&lt;br /&gt;
| [[#GPUREG_01A8|GPUREG_01A8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01A9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT6_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01AA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT6_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01AB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT6_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01AC&lt;br /&gt;
| [[#GPUREG_01AC|GPUREG_01AC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AD&lt;br /&gt;
| [[#GPUREG_01AD|GPUREG_01AD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AE&lt;br /&gt;
| [[#GPUREG_01AE|GPUREG_01AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01AF&lt;br /&gt;
| [[#GPUREG_01AF|GPUREG_01AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B0&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR0|GPUREG_LIGHT7_SPECULAR0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR0&lt;br /&gt;
|-&lt;br /&gt;
| 01B1&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPECULAR1|GPUREG_LIGHT7_SPECULAR1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPECULAR1&lt;br /&gt;
|-&lt;br /&gt;
| 01B2&lt;br /&gt;
| [[#GPUREG_LIGHTi_DIFFUSE|GPUREG_LIGHT7_DIFFUSE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIFFUSE&lt;br /&gt;
|-&lt;br /&gt;
| 01B3&lt;br /&gt;
| [[#GPUREG_LIGHTi_AMBIENT|GPUREG_LIGHT7_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01B4&lt;br /&gt;
| [[#GPUREG_LIGHTi_XY|GPUREG_LIGHT7_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B5&lt;br /&gt;
| [[#GPUREG_LIGHTi_Z|GPUREG_LIGHT7_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_POSITION_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B6&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_XY|GPUREG_LIGHT7_SPOTDIR_XY]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_XY&lt;br /&gt;
|-&lt;br /&gt;
| 01B7&lt;br /&gt;
| [[#GPUREG_LIGHTi_SPOTDIR_Z|GPUREG_LIGHT7_SPOTDIR_Z]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_SPOT_Z&lt;br /&gt;
|-&lt;br /&gt;
| 01B8&lt;br /&gt;
| [[#GPUREG_01B8|GPUREG_01B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01B9&lt;br /&gt;
| [[#GPUREG_LIGHTi_CONFIG|GPUREG_LIGHT7_CONFIG]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_TYPE&lt;br /&gt;
|-&lt;br /&gt;
| 01BA&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_BIAS|GPUREG_LIGHT7_ATTENUATION_BIAS]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS&lt;br /&gt;
|-&lt;br /&gt;
| 01BB&lt;br /&gt;
| [[#GPUREG_LIGHTi_ATTENUATION_SCALE|GPUREG_LIGHT7_ATTENUATION_SCALE]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01BC&lt;br /&gt;
| [[#GPUREG_01BC|GPUREG_01BC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BD&lt;br /&gt;
| [[#GPUREG_01BD|GPUREG_01BD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BE&lt;br /&gt;
| [[#GPUREG_01BE|GPUREG_01BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01BF&lt;br /&gt;
| [[#GPUREG_01BF|GPUREG_01BF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C0&lt;br /&gt;
| [[#GPUREG_LIGHTING_AMBIENT|GPUREG_LIGHTING_AMBIENT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_AMBIENT&lt;br /&gt;
|-&lt;br /&gt;
| 01C1&lt;br /&gt;
| [[#GPUREG_01C1|GPUREG_01C1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C2&lt;br /&gt;
| [[#GPUREG_LIGHTING_NUM_LIGHTS|GPUREG_LIGHTING_NUM_LIGHTS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 01C3&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG0|GPUREG_LIGHTING_CONFIG0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 01C4&lt;br /&gt;
| [[#GPUREG_LIGHTING_CONFIG1|GPUREG_LIGHTING_CONFIG1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_FUNC_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 01C5&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_INDEX|GPUREG_LIGHTING_LUT_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT&lt;br /&gt;
|-&lt;br /&gt;
| 01C6&lt;br /&gt;
| [[#GPUREG_LIGHTING_ENABLE1|GPUREG_LIGHTING_ENABLE1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_EN1&lt;br /&gt;
|-&lt;br /&gt;
| 01C7&lt;br /&gt;
| [[#GPUREG_01C7|GPUREG_01C7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01C8&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 01C9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 01CA&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 01CB&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA3]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 01CC&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA4]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 01CD&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA5]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 01CE&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA6]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 01CF&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUT_DATAi|GPUREG_LIGHTING_LUT_DATA7]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 01D0&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_ABS|GPUREG_LIGHTING_LUTINPUT_ABS]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_ABSLUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D1&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SELECT|GPUREG_LIGHTING_LUTINPUT_SELECT]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTINPUT&lt;br /&gt;
|-&lt;br /&gt;
| 01D2&lt;br /&gt;
| [[#GPUREG_LIGHTING_LUTINPUT_SCALE|GPUREG_LIGHTING_LUTINPUT_SCALE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_LUTSCALE&lt;br /&gt;
|-&lt;br /&gt;
| 01D3&lt;br /&gt;
| [[#GPUREG_01D3|GPUREG_01D3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D4&lt;br /&gt;
| [[#GPUREG_01D4|GPUREG_01D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D5&lt;br /&gt;
| [[#GPUREG_01D5|GPUREG_01D5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D6&lt;br /&gt;
| [[#GPUREG_01D6|GPUREG_01D6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D7&lt;br /&gt;
| [[#GPUREG_01D7|GPUREG_01D7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D8&lt;br /&gt;
| [[#GPUREG_01D8|GPUREG_01D8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01D9&lt;br /&gt;
| [[#GPUREG_LIGHTING_LIGHT_PERMUTATION|GPUREG_LIGHTING_LIGHT_PERMUTATION]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_FRAG_LIGHT_SRC_EN_ID&lt;br /&gt;
|-&lt;br /&gt;
| 01DA&lt;br /&gt;
| [[#GPUREG_01DA|GPUREG_01DA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DB&lt;br /&gt;
| [[#GPUREG_01DB|GPUREG_01DB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DC&lt;br /&gt;
| [[#GPUREG_01DC|GPUREG_01DC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DD&lt;br /&gt;
| [[#GPUREG_01DD|GPUREG_01DD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DE&lt;br /&gt;
| [[#GPUREG_01DE|GPUREG_01DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01DF&lt;br /&gt;
| [[#GPUREG_01DF|GPUREG_01DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E0&lt;br /&gt;
| [[#GPUREG_01E0|GPUREG_01E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E1&lt;br /&gt;
| [[#GPUREG_01E1|GPUREG_01E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E2&lt;br /&gt;
| [[#GPUREG_01E2|GPUREG_01E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E3&lt;br /&gt;
| [[#GPUREG_01E3|GPUREG_01E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E4&lt;br /&gt;
| [[#GPUREG_01E4|GPUREG_01E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E5&lt;br /&gt;
| [[#GPUREG_01E5|GPUREG_01E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E6&lt;br /&gt;
| [[#GPUREG_01E6|GPUREG_01E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E7&lt;br /&gt;
| [[#GPUREG_01E7|GPUREG_01E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E8&lt;br /&gt;
| [[#GPUREG_01E8|GPUREG_01E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01E9&lt;br /&gt;
| [[#GPUREG_01E9|GPUREG_01E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EA&lt;br /&gt;
| [[#GPUREG_01EA|GPUREG_01EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EB&lt;br /&gt;
| [[#GPUREG_01EB|GPUREG_01EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EC&lt;br /&gt;
| [[#GPUREG_01EC|GPUREG_01EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01ED&lt;br /&gt;
| [[#GPUREG_01ED|GPUREG_01ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EE&lt;br /&gt;
| [[#GPUREG_01EE|GPUREG_01EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01EF&lt;br /&gt;
| [[#GPUREG_01EF|GPUREG_01EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F0&lt;br /&gt;
| [[#GPUREG_01F0|GPUREG_01F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F1&lt;br /&gt;
| [[#GPUREG_01F1|GPUREG_01F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F2&lt;br /&gt;
| [[#GPUREG_01F2|GPUREG_01F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F3&lt;br /&gt;
| [[#GPUREG_01F3|GPUREG_01F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F4&lt;br /&gt;
| [[#GPUREG_01F4|GPUREG_01F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F5&lt;br /&gt;
| [[#GPUREG_01F5|GPUREG_01F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F6&lt;br /&gt;
| [[#GPUREG_01F6|GPUREG_01F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F7&lt;br /&gt;
| [[#GPUREG_01F7|GPUREG_01F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F8&lt;br /&gt;
| [[#GPUREG_01F8|GPUREG_01F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01F9&lt;br /&gt;
| [[#GPUREG_01F9|GPUREG_01F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FA&lt;br /&gt;
| [[#GPUREG_01FA|GPUREG_01FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FB&lt;br /&gt;
| [[#GPUREG_01FB|GPUREG_01FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FC&lt;br /&gt;
| [[#GPUREG_01FC|GPUREG_01FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FD&lt;br /&gt;
| [[#GPUREG_01FD|GPUREG_01FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FE&lt;br /&gt;
| [[#GPUREG_01FE|GPUREG_01FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 01FF&lt;br /&gt;
| [[#GPUREG_01FF|GPUREG_01FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Geometry pipeline registers (0x200-0x27F) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 0200&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_LOC|GPUREG_ATTRIBBUFFERS_LOC]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0201&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_LOW|GPUREG_ATTRIBBUFFERS_FORMAT_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS0&lt;br /&gt;
|-&lt;br /&gt;
| 0202&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERS_FORMAT_HIGH|GPUREG_ATTRIBBUFFERS_FORMAT_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VTX_ATTR_ARRAYS1&lt;br /&gt;
|-&lt;br /&gt;
| 0203&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER0_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ATTR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0204&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER0_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT0&lt;br /&gt;
|-&lt;br /&gt;
| 0205&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER0_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_LOAD_ARRAY0_ELEMENT1&lt;br /&gt;
|-&lt;br /&gt;
| 0206&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER1_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0207&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER1_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0208&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER1_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0209&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER2_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER2_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER2_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER3_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER3_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER3_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 020F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER4_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0210&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER4_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0211&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER4_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0212&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER5_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0213&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER5_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0214&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER5_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0215&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER6_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0216&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER6_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0217&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER6_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0218&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER7_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0219&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER7_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021A&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER7_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021B&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER8_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021C&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER8_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021D&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER8_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021E&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER9_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 021F&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER9_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0220&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER9_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0221&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER10_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0222&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER10_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0223&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER10_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0224&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_OFFSET|GPUREG_ATTRIBBUFFER11_OFFSET]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0225&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG1|GPUREG_ATTRIBBUFFER11_CONFIG1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0226&lt;br /&gt;
| [[#GPUREG_ATTRIBBUFFERi_CONFIG2|GPUREG_ATTRIBBUFFER11_CONFIG2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0227&lt;br /&gt;
| [[#GPUREG_INDEXBUFFER_CONFIG|GPUREG_INDEXBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_INDEX_ARRAY_ADDR_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 0228&lt;br /&gt;
| [[#GPUREG_NUMVERTICES|GPUREG_NUMVERTICES]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_DRAW_VERTEX_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 0229&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG|GPUREG_GEOSTAGE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_DRAW_MODE0&lt;br /&gt;
|-&lt;br /&gt;
| 022A&lt;br /&gt;
| [[#GPUREG_VERTEX_OFFSET|GPUREG_VERTEX_OFFSET]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_DRAW_VERTEX_OFFSET&lt;br /&gt;
|-&lt;br /&gt;
| 022B&lt;br /&gt;
| [[#GPUREG_022B|GPUREG_022B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022C&lt;br /&gt;
| [[#GPUREG_022C|GPUREG_022C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 022D&lt;br /&gt;
| [[#GPUREG_POST_VERTEX_CACHE_NUM|GPUREG_POST_VERTEX_CACHE_NUM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_POST_VERTEX_CACHE_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 022E&lt;br /&gt;
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ARRAY&lt;br /&gt;
|-&lt;br /&gt;
| 022F&lt;br /&gt;
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]&lt;br /&gt;
|&lt;br /&gt;
|PICA_REG_START_DRAW_ELEMENT&lt;br /&gt;
|-&lt;br /&gt;
| 0230&lt;br /&gt;
| [[#GPUREG_0230|GPUREG_0230]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0231&lt;br /&gt;
| [[#GPUREG_VTX_FUNC|GPUREG_VTX_FUNC]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VTX_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0232&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_INDEX|GPUREG_FIXEDATTRIB_INDEX]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0233&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0234&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0235&lt;br /&gt;
| [[#GPUREG_FIXEDATTRIB_DATAi|GPUREG_FIXEDATTRIB_DATA2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_FIXED_ATTR_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0236&lt;br /&gt;
| [[#GPUREG_0236|GPUREG_0236]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0237&lt;br /&gt;
| [[#GPUREG_0237|GPUREG_0237]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0238&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE0|GPUREG_CMDBUF_SIZE0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 0239&lt;br /&gt;
| [[#GPUREG_CMDBUF_SIZE1|GPUREG_CMDBUF_SIZE1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_SIZE_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023A&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR0|GPUREG_CMDBUF_ADDR0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023B&lt;br /&gt;
| [[#GPUREG_CMDBUF_ADDR1|GPUREG_CMDBUF_ADDR1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_ADDR_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023C&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP0|GPUREG_CMDBUF_JUMP0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH0&lt;br /&gt;
|-&lt;br /&gt;
| 023D&lt;br /&gt;
| [[#GPUREG_CMDBUF_JUMP1|GPUREG_CMDBUF_JUMP1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_COMMAND_BUF_KICK_CH1&lt;br /&gt;
|-&lt;br /&gt;
| 023E&lt;br /&gt;
| [[#GPUREG_023E|GPUREG_023E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 023F&lt;br /&gt;
| [[#GPUREG_023F|GPUREG_023F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0240&lt;br /&gt;
| [[#GPUREG_0240|GPUREG_0240]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0241&lt;br /&gt;
| [[#GPUREG_0241|GPUREG_0241]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0242&lt;br /&gt;
| [[#GPUREG_VSH_NUM_ATTR|GPUREG_VSH_NUM_ATTR]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_ATTR_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 0243&lt;br /&gt;
| [[#GPUREG_0243|GPUREG_0243]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0244&lt;br /&gt;
| [[#GPUREG_VSH_COM_MODE|GPUREG_VSH_COM_MODE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_COM_MODE&lt;br /&gt;
|-&lt;br /&gt;
| 0245&lt;br /&gt;
| [[#GPUREG_START_DRAW_FUNC0|GPUREG_START_DRAW_FUNC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC0&lt;br /&gt;
|-&lt;br /&gt;
| 0246&lt;br /&gt;
| [[#GPUREG_0246|GPUREG_0246]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0247&lt;br /&gt;
| [[#GPUREG_0247|GPUREG_0247]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0248&lt;br /&gt;
| [[#GPUREG_0248|GPUREG_0248]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0249&lt;br /&gt;
| [[#GPUREG_0249|GPUREG_0249]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024A&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL1|GPUREG_VSH_OUTMAP_TOTAL1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM1&lt;br /&gt;
|-&lt;br /&gt;
| 024B&lt;br /&gt;
| [[#GPUREG_024B|GPUREG_024B]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024C&lt;br /&gt;
| [[#GPUREG_024C|GPUREG_024C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024D&lt;br /&gt;
| [[#GPUREG_024D|GPUREG_024D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024E&lt;br /&gt;
| [[#GPUREG_024E|GPUREG_024E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 024F&lt;br /&gt;
| [[#GPUREG_024F|GPUREG_024F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0250&lt;br /&gt;
| [[#GPUREG_0250|GPUREG_0250]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0251&lt;br /&gt;
| [[#GPUREG_VSH_OUTMAP_TOTAL2|GPUREG_VSH_OUTMAP_TOTAL2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_VS_OUT_REG_NUM2&lt;br /&gt;
|-&lt;br /&gt;
| 0252&lt;br /&gt;
| [[#GPUREG_GSH_MISC0|GPUREG_GSH_MISC0]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG0&lt;br /&gt;
|-&lt;br /&gt;
| 0253&lt;br /&gt;
| [[#GPUREG_GEOSTAGE_CONFIG2|GPUREG_GEOSTAGE_CONFIG2]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_DRAW_MODE1&lt;br /&gt;
|-&lt;br /&gt;
| 0254&lt;br /&gt;
| [[#GPUREG_GSH_MISC1|GPUREG_GSH_MISC1]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_GS_MISC_REG1&lt;br /&gt;
|-&lt;br /&gt;
| 0255&lt;br /&gt;
| [[#GPUREG_0255|GPUREG_0255]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0256&lt;br /&gt;
| [[#GPUREG_0256|GPUREG_0256]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0257&lt;br /&gt;
| [[#GPUREG_0257|GPUREG_0257]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0258&lt;br /&gt;
| [[#GPUREG_0258|GPUREG_0258]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0259&lt;br /&gt;
| [[#GPUREG_0259|GPUREG_0259]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025A&lt;br /&gt;
| [[#GPUREG_025A|GPUREG_025A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025B&lt;br /&gt;
| [[#GPUREG_025B|GPUREG_025B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025C&lt;br /&gt;
| [[#GPUREG_025C|GPUREG_025C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025D&lt;br /&gt;
| [[#GPUREG_025D|GPUREG_025D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 025E&lt;br /&gt;
| [[#GPUREG_PRIMITIVE_CONFIG|GPUREG_PRIMITIVE_CONFIG]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3&lt;br /&gt;
|-&lt;br /&gt;
| 025F&lt;br /&gt;
| [[#GPUREG_RESTART_PRIMITIVE|GPUREG_RESTART_PRIMITIVE]]&lt;br /&gt;
|?&lt;br /&gt;
|PICA_REG_START_DRAW_FUNC1&lt;br /&gt;
|-&lt;br /&gt;
| 0260&lt;br /&gt;
| [[#GPUREG_0260|GPUREG_0260]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0261&lt;br /&gt;
| [[#GPUREG_0261|GPUREG_0261]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0262&lt;br /&gt;
| [[#GPUREG_0262|GPUREG_0262]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0263&lt;br /&gt;
| [[#GPUREG_0263|GPUREG_0263]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0264&lt;br /&gt;
| [[#GPUREG_0264|GPUREG_0264]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0265&lt;br /&gt;
| [[#GPUREG_0265|GPUREG_0265]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0266&lt;br /&gt;
| [[#GPUREG_0266|GPUREG_0266]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0267&lt;br /&gt;
| [[#GPUREG_0267|GPUREG_0267]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0268&lt;br /&gt;
| [[#GPUREG_0268|GPUREG_0268]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0269&lt;br /&gt;
| [[#GPUREG_0269|GPUREG_0269]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026A&lt;br /&gt;
| [[#GPUREG_026A|GPUREG_026A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026B&lt;br /&gt;
| [[#GPUREG_026B|GPUREG_026B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026C&lt;br /&gt;
| [[#GPUREG_026C|GPUREG_026C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026D&lt;br /&gt;
| [[#GPUREG_026D|GPUREG_026D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026E&lt;br /&gt;
| [[#GPUREG_026E|GPUREG_026E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 026F&lt;br /&gt;
| [[#GPUREG_026F|GPUREG_026F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0270&lt;br /&gt;
| [[#GPUREG_0270|GPUREG_0270]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0271&lt;br /&gt;
| [[#GPUREG_0271|GPUREG_0271]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0272&lt;br /&gt;
| [[#GPUREG_0272|GPUREG_0272]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0273&lt;br /&gt;
| [[#GPUREG_0273|GPUREG_0273]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0274&lt;br /&gt;
| [[#GPUREG_0274|GPUREG_0274]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0275&lt;br /&gt;
| [[#GPUREG_0275|GPUREG_0275]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0276&lt;br /&gt;
| [[#GPUREG_0276|GPUREG_0276]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0277&lt;br /&gt;
| [[#GPUREG_0277|GPUREG_0277]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0278&lt;br /&gt;
| [[#GPUREG_0278|GPUREG_0278]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0279&lt;br /&gt;
| [[#GPUREG_0279|GPUREG_0279]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027A&lt;br /&gt;
| [[#GPUREG_027A|GPUREG_027A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027B&lt;br /&gt;
| [[#GPUREG_027B|GPUREG_027B]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027C&lt;br /&gt;
| [[#GPUREG_027C|GPUREG_027C]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027D&lt;br /&gt;
| [[#GPUREG_027D|GPUREG_027D]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027E&lt;br /&gt;
| [[#GPUREG_027E|GPUREG_027E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 027F&lt;br /&gt;
| [[#GPUREG_027F|GPUREG_027F]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shader registers (0x280-0x2DF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Geometry shader&lt;br /&gt;
|-&lt;br /&gt;
| 0280&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_GSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 0281&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 0282&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 0283&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 0284&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_GSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 0285&lt;br /&gt;
| [[#GPUREG_0285|GPUREG_0285]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0286&lt;br /&gt;
| [[#GPUREG_0286|GPUREG_0286]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0287&lt;br /&gt;
| [[#GPUREG_0287|GPUREG_0287]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0288&lt;br /&gt;
| [[#GPUREG_0288|GPUREG_0288]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0289&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_GSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_NUM&lt;br /&gt;
|-&lt;br /&gt;
| 028A&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_GSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 028B&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 028C&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 028D&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_GSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 028E&lt;br /&gt;
| [[#GPUREG_028E|GPUREG_028E]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 028F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_GSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 0290&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_GSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 0291&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 0292&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 0293&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 0294&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 0295&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 0296&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 0297&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 0298&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_GSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 0299&lt;br /&gt;
| [[#GPUREG_0299|GPUREG_0299]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029A&lt;br /&gt;
| [[#GPUREG_029A|GPUREG_029A]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 029B&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_GSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_GS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 029C&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 029D&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 029E&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 029F&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02A0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02A1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02A2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02A3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_GSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02A4&lt;br /&gt;
| [[#GPUREG_02A4|GPUREG_02A4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02A5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_GSH_OPDESCS_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02A6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02A7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02A8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02A9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02AA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02AB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02AC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02AD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_GSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_GS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02AE&lt;br /&gt;
| [[#GPUREG_02AE|GPUREG_02AE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02AF&lt;br /&gt;
| [[#GPUREG_02AF|GPUREG_02AF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | Vertex shader&lt;br /&gt;
|-&lt;br /&gt;
| 02B0&lt;br /&gt;
| [[#GPUREG_SH_BOOLUNIFORM|GPUREG_VSH_BOOLUNIFORM]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_BOOL&lt;br /&gt;
|-&lt;br /&gt;
| 02B1&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT0&lt;br /&gt;
|-&lt;br /&gt;
| 02B2&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT1&lt;br /&gt;
|-&lt;br /&gt;
| 02B3&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT2&lt;br /&gt;
|-&lt;br /&gt;
| 02B4&lt;br /&gt;
| [[#GPUREG_SH_INTUNIFORM_Ii|GPUREG_VSH_INTUNIFORM_I3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_INT3&lt;br /&gt;
|-&lt;br /&gt;
| 02B5&lt;br /&gt;
| [[#GPUREG_02B5|GPUREG_02B5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B6&lt;br /&gt;
| [[#GPUREG_02B6|GPUREG_02B6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B7&lt;br /&gt;
| [[#GPUREG_02B7|GPUREG_02B7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B8&lt;br /&gt;
| [[#GPUREG_02B8|GPUREG_02B8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02B9&lt;br /&gt;
| [[#GPUREG_SH_INPUTBUFFER_CONFIG|GPUREG_VSH_INPUTBUFFER_CONFIG]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_NUM0&lt;br /&gt;
|-&lt;br /&gt;
| 02BA&lt;br /&gt;
| [[#GPUREG_SH_ENTRYPOINT|GPUREG_VSH_ENTRYPOINT]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_START_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02BB&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_LOW|GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP0&lt;br /&gt;
|-&lt;br /&gt;
| 02BC&lt;br /&gt;
| [[#GPUREG_SH_ATTRIBUTES_PERMUTATION_HIGH|GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_ATTR_IN_REG_MAP1&lt;br /&gt;
|-&lt;br /&gt;
| 02BD&lt;br /&gt;
| [[#GPUREG_SH_OUTMAP_MASK|GPUREG_VSH_OUTMAP_MASK]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_OUT_REG_MASK&lt;br /&gt;
|-&lt;br /&gt;
| 02BE&lt;br /&gt;
| [[#GPUREG_02BE|GPUREG_02BE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02BF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_END|GPUREG_VSH_CODETRANSFER_END]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_RENEWAL_END&lt;br /&gt;
|-&lt;br /&gt;
| 02C0&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_VSH_FLOATUNIFORM_INDEX]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02C1&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02C2&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02C3&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02C4&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02C5&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02C6&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02C7&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02C8&lt;br /&gt;
| [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_VSH_FLOATUNIFORM_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_FLOAT_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02C9&lt;br /&gt;
| [[#GPUREG_02C9|GPUREG_02C9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CA&lt;br /&gt;
| [[#GPUREG_02CA|GPUREG_02CA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02CB&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_VSH_CODETRANSFER_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02CC&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02CD&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02CE&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02CF&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02D0&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02D1&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02D2&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02D3&lt;br /&gt;
| [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_VSH_CODETRANSFER_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02D4&lt;br /&gt;
| [[#GPUREG_02D4|GPUREG_02D4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02D5&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_VSH_OPDESCS_INDEX]]&lt;br /&gt;
| ?&lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_ADDR&lt;br /&gt;
|-&lt;br /&gt;
| 02D6&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA0]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA0&lt;br /&gt;
|-&lt;br /&gt;
| 02D7&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA1]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA1&lt;br /&gt;
|-&lt;br /&gt;
| 02D8&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA2]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA2&lt;br /&gt;
|-&lt;br /&gt;
| 02D9&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA3]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA3&lt;br /&gt;
|-&lt;br /&gt;
| 02DA&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA4]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA4&lt;br /&gt;
|-&lt;br /&gt;
| 02DB&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA5]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA5&lt;br /&gt;
|-&lt;br /&gt;
| 02DC&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA6]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA6&lt;br /&gt;
|-&lt;br /&gt;
| 02DD&lt;br /&gt;
| [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_VSH_OPDESCS_DATA7]]&lt;br /&gt;
| &lt;br /&gt;
|PICA_REG_VS_PROG_SWIZZLE_DATA7&lt;br /&gt;
|-&lt;br /&gt;
| 02DE&lt;br /&gt;
| [[#GPUREG_02DE|GPUREG_02DE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02DF&lt;br /&gt;
| [[#GPUREG_02DF|GPUREG_02DF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown registers (0x2E0-0x2FF) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register ID&lt;br /&gt;
! Register name&lt;br /&gt;
! Notes&lt;br /&gt;
! Official Name&lt;br /&gt;
|-&lt;br /&gt;
| 02E0&lt;br /&gt;
| [[#GPUREG_02E0|GPUREG_02E0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E1&lt;br /&gt;
| [[#GPUREG_02E1|GPUREG_02E1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E2&lt;br /&gt;
| [[#GPUREG_02E2|GPUREG_02E2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E3&lt;br /&gt;
| [[#GPUREG_02E3|GPUREG_02E3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E4&lt;br /&gt;
| [[#GPUREG_02E4|GPUREG_02E4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E5&lt;br /&gt;
| [[#GPUREG_02E5|GPUREG_02E5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E6&lt;br /&gt;
| [[#GPUREG_02E6|GPUREG_02E6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E7&lt;br /&gt;
| [[#GPUREG_02E7|GPUREG_02E7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E8&lt;br /&gt;
| [[#GPUREG_02E8|GPUREG_02E8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02E9&lt;br /&gt;
| [[#GPUREG_02E9|GPUREG_02E9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EA&lt;br /&gt;
| [[#GPUREG_02EA|GPUREG_02EA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EB&lt;br /&gt;
| [[#GPUREG_02EB|GPUREG_02EB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EC&lt;br /&gt;
| [[#GPUREG_02EC|GPUREG_02EC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02ED&lt;br /&gt;
| [[#GPUREG_02ED|GPUREG_02ED]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EE&lt;br /&gt;
| [[#GPUREG_02EE|GPUREG_02EE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02EF&lt;br /&gt;
| [[#GPUREG_02EF|GPUREG_02EF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F0&lt;br /&gt;
| [[#GPUREG_02F0|GPUREG_02F0]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F1&lt;br /&gt;
| [[#GPUREG_02F1|GPUREG_02F1]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F2&lt;br /&gt;
| [[#GPUREG_02F2|GPUREG_02F2]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F3&lt;br /&gt;
| [[#GPUREG_02F3|GPUREG_02F3]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F4&lt;br /&gt;
| [[#GPUREG_02F4|GPUREG_02F4]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F5&lt;br /&gt;
| [[#GPUREG_02F5|GPUREG_02F5]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F6&lt;br /&gt;
| [[#GPUREG_02F6|GPUREG_02F6]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F7&lt;br /&gt;
| [[#GPUREG_02F7|GPUREG_02F7]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F8&lt;br /&gt;
| [[#GPUREG_02F8|GPUREG_02F8]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02F9&lt;br /&gt;
| [[#GPUREG_02F9|GPUREG_02F9]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FA&lt;br /&gt;
| [[#GPUREG_02FA|GPUREG_02FA]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FB&lt;br /&gt;
| [[#GPUREG_02FB|GPUREG_02FB]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FC&lt;br /&gt;
| [[#GPUREG_02FC|GPUREG_02FC]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FD&lt;br /&gt;
| [[#GPUREG_02FD|GPUREG_02FD]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FE&lt;br /&gt;
| [[#GPUREG_02FE|GPUREG_02FE]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 02FF&lt;br /&gt;
| [[#GPUREG_02FF|GPUREG_02FF]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FINALIZE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger P3D Interrupt (0 = idle, non-zero = trigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.&lt;br /&gt;
Failure to write to this register in any command buffer will result in the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
== Rasterizer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FACECULLING_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Culling mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the face culling mode.&lt;br /&gt;
&lt;br /&gt;
Culling mode values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Front Face (Counter Clockwise)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Back Face (Counter Clockwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_WIDTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, width / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_INVW.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VIEWPORT_INVW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport width, along with GPUREG_VIEWPORT_WIDTH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_HEIGHT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, height / 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_INVH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_INVH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| float1.7.23, 2 / height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport height, along with GPUREG_VIEWPORT_HEIGHT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable clipping planes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAGOP_CLIP_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Clipping plane coefficient &#039;&#039;i&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure clipping plane coefficients.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near - Far&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range scale.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Near + Polygon Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the depth range bias.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_TOTAL ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of following attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the total shader output map attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTMAP_O&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Semantic for the x component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Semantic for the y component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 16-20&lt;br /&gt;
| unsigned, Semantic for the z component of the register.&lt;br /&gt;
|-&lt;br /&gt;
| 24-28&lt;br /&gt;
| unsigned, Semantic for the w component of the register.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers map components of the corresponding vertex shader output register to specific fixed-function semantics.&lt;br /&gt;
&lt;br /&gt;
Semantic values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Semantic&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| position.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| position.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| position.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| position.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| normquat.x&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Quaternion specifying the normal/tangent frame (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| normquat.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| normquat.z&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| normquat.w&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| color.r&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Vertex color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| color.g&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| color.b&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| color.a&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| texcoord0.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| texcoord0.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| texcoord1.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| texcoord1.v&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| texcoord0.w&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| view.x&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | View vector (for fragment lighting)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| view.y&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| view.z&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| texcoord2.u&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Texture coordinates for texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| texcoord2.v&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| Unused component&lt;br /&gt;
| Should be set for unused components of the output register&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Early depth function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the early depth test function.&lt;br /&gt;
&lt;br /&gt;
Early depth function values:&lt;br /&gt;
&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;
| &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether the early depth test is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_CLEAR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = clear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the early depth data.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Use texture coordinates (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the shader output attribute mode.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 3 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable scissor testing.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SCISSORTEST_POS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X1&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test start position.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_SCISSORTEST_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| unsigned, X2&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| unsigned, Y2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the scissor test end position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VIEWPORT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-9&lt;br /&gt;
| signed, X&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| signed, Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the viewport position.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| unsigned, Clear value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the early depth clear value.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHMAP_ENABLE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable depth range.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RENDERBUF_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the output framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_SH_OUTATTR_CLOCK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, &#039;position.z&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, &#039;color&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, &#039;texcoord0&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, &#039;texcoord1&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, &#039;texcoord2&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, &#039;texcoord0.w&#039; present (0 = absent, 1 = present)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, &#039;normquat&#039; or &#039;view&#039; component present (0 = absent, 1 = present)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the clock supply to parts relating to certain attributes.&lt;br /&gt;
&lt;br /&gt;
== Texturing registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Texture 0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Texture 1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Texture 2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Texture 3 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Texture 3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Texture 2 coordinates&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Clear texture cache (0 = don&#039;t clear, 1 = clear)&lt;br /&gt;
|-&lt;br /&gt;
| 17-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable texture units.&lt;br /&gt;
&lt;br /&gt;
Texture 3 coordinates values:&lt;br /&gt;
&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;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Texture 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Texture 2 coordinates values:&lt;br /&gt;
&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;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Texture 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_BORDER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s border color.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Height&lt;br /&gt;
|-&lt;br /&gt;
| 16-26&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s dimensions.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_PARAM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Magnification filter&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, ETC1 (0 = not ETC1, 2 = ETC1) note: still 0 for ETC1A4&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Wrap T&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Wrap S&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| unsigned, Shadow (Texture 0 only, 0 = not shadow, 1 = shadow)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Mipmap filter&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, Type (Texture 0 only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s extra parameters.&lt;br /&gt;
&lt;br /&gt;
Filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wrap values:&lt;br /&gt;
&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;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to border&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Type values:&lt;br /&gt;
&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;
| 2D&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Cube map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Shadow 2D&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Projection&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shadow cube&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Disabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_LOD ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.4.8, Bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Max Level&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Min Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a texture unit&#039;s level of detail.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_ADDR&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
First ADDR register:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Subsequent ADDR registers:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-21&lt;br /&gt;
| unsigned, Texture physical address &amp;gt;&amp;gt; 3 (upper 6 bits reused from first ADDR register)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s physical address(es) in memory. Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.&lt;br /&gt;
&lt;br /&gt;
If the texture is a cube:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Register&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| ADDR1&lt;br /&gt;
| Positive X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR2&lt;br /&gt;
| Negative X&lt;br /&gt;
|-&lt;br /&gt;
| ADDR3&lt;br /&gt;
| Positive Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR4&lt;br /&gt;
| Negative Y&lt;br /&gt;
|-&lt;br /&gt;
| ADDR5&lt;br /&gt;
| Positive Z&lt;br /&gt;
|-&lt;br /&gt;
| ADDR6&lt;br /&gt;
| Negative Z&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Otherwise, ADDR(1) points to a 2D texture, and the rest are empty.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Perspective (0 = perspective, 1 = not perspective)&lt;br /&gt;
|-&lt;br /&gt;
| 1-23&lt;br /&gt;
| fixed0.0.24, Z bias (upper 23 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s shadow texture properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXUNIT&#039;&#039;i&#039;&#039;_TYPE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a texture unit&#039;s data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
!  GL Format&lt;br /&gt;
!  GL Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RGB888&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| RGBA5551&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_5_5_1&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| RGB565&lt;br /&gt;
| GL_RGB&lt;br /&gt;
| GL_UNSIGNED_SHORT_5_6_5&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| RGBA4444&lt;br /&gt;
| GL_RGBA&lt;br /&gt;
| GL_UNSIGNED_SHORT_4_4_4_4&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| IA8&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| HILO8&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| I8&lt;br /&gt;
| GL_LUMINANCE&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| A8&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| IA44&lt;br /&gt;
| GL_LUMINANCE_ALPHA&lt;br /&gt;
| GL_UNSIGNED_BYTE_4_4_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| I4&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| A4&lt;br /&gt;
| GL_ALPHA&lt;br /&gt;
| GL_UNSIGNED_NIBBLE_EXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| ETC1&lt;br /&gt;
| GL_ETC1_RGB8_OES&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| ETC1A4&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_LIGHTING_ENABLE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to enable lighting.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, U-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 3-5&lt;br /&gt;
| unsigned, V-direction clamp&lt;br /&gt;
|-&lt;br /&gt;
| 6-9&lt;br /&gt;
| unsigned, RGB mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 10-13&lt;br /&gt;
| unsigned, Alpha mapping function&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Handle alpha separately (0 = don&#039;t separate, 1 = separate)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Noise enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, U-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, V-direction shift&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| float1.5.10, Texture bias (lower 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Clamp values:&lt;br /&gt;
&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;
| Clamp to zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Clamp to edge&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Symmetrical repeat&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Mirrored repeat&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mapping function values:&lt;br /&gt;
&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;
| U&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| U²&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| V²&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (U + V) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (U² + V²) / 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| sqrt(U² + V²)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Maximum&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Rmax&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shift values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Odd&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Even&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, U-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, U-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| fixed1.3.12, V-direction noise amplitude&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s V-direction noise amplitude/phase.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX3 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, U-direction noise frequency&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, V-direction noise frequency&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit&#039;s U-direction and V-direction noise frequency.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX4 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Minification filter&lt;br /&gt;
|-&lt;br /&gt;
| 3-10&lt;br /&gt;
| 0x60&lt;br /&gt;
|-&lt;br /&gt;
| 11-18&lt;br /&gt;
| unsigned, Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 19-26&lt;br /&gt;
| float1.5.10, Texture bias (upper 8 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the procedural texture unit.&lt;br /&gt;
&lt;br /&gt;
Minification filter values:&lt;br /&gt;
&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;
| Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Linear&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Nearest, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Linear, Mipmap Nearest&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Nearest, Mipmap Linear&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Linear, Mipmap Linear&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXUNIT3_PROCTEX5 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Texture offset&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| 0xE0C080&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the procedural texture unit&#039;s offset.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Reference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set which look-up table to write to, with GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039;, at what index.&lt;br /&gt;
&lt;br /&gt;
Reference table values:&lt;br /&gt;
&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;
| Noise table&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Alpha mapping function table&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Color table&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Color difference table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_PROCTEX_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, starting at the selected index.&lt;br /&gt;
&lt;br /&gt;
==== Noise Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== RGB Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Alpha Mapping Function Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Difference from next element&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Color Difference Table ====&lt;br /&gt;
&lt;br /&gt;
256 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| fixed1.0.7, Red difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| fixed1.0.7, Green difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| fixed1.0.7, Blue difference between current and next color table elements&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| fixed1.0.7, Alpha difference between current and next color table elements&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SOURCE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB source 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB source 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB source 2&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha source 0&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Alpha source 1&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s sources.&lt;br /&gt;
&lt;br /&gt;
Source values:&lt;br /&gt;
&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;
| Primary color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Fragment primary color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fragment secondary color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Texture 0&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Texture 1&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Texture 2&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Texture 3&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Constant (from GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_OPERAND ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, RGB operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, RGB operand 2&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Alpha operand 0&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Alpha operand 1&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Alpha operand 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s operands.&lt;br /&gt;
&lt;br /&gt;
RGB operand values:&lt;br /&gt;
&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;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Alpha operand values:&lt;br /&gt;
&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;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source red&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source red&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Source green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus source green&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COMBINER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, RGB combine&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Alpha combine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s combine mode.&lt;br /&gt;
&lt;br /&gt;
Combine values:&lt;br /&gt;
&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;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modulate&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Add signed&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Interpolate&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Dot3 RGB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Dot3 RGBA&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Multiply then add&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Add then multiply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s constant color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV&#039;&#039;i&#039;&#039;_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, RGB scale&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Alpha scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a texture combiner&#039;s scale value.&lt;br /&gt;
&lt;br /&gt;
Scale values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_TEXENV_UPDATE_BUFFER ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fog mode&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Shading density source&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, TexEnv 1 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, TexEnv 2 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, TexEnv 3 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, TexEnv 4 RGB buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, TexEnv 1 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, TexEnv 2 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, TexEnv 3 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, TexEnv 4 alpha buffer input&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Z flip (0 = don&#039;t flip, 1 = flip)&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is shared between the gas/fog mode configuration and texture combiner buffer inputs. Texture combiner buffer inputs are typically written with a mask of 0x2, and the gas/fog mode configuration is typically written with a mask of 0x5.&lt;br /&gt;
&lt;br /&gt;
Fog mode values:&lt;br /&gt;
&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;
| Disabled&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Gas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Shading density source values:&lt;br /&gt;
&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;
| Plain density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Depth density&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Buffer input values:&lt;br /&gt;
&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;
| Previous buffer&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Previous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the color of fog.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ATTENUATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas density attenuation.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_ACCMAX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Gas maximum density accumulation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas maximum density accumulation.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FOG_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FOG_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the fog look-up table, starting at the index selected with GPUREG_FOG_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Fog Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
128 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Difference from next element &lt;br /&gt;
|-&lt;br /&gt;
| 13-23&lt;br /&gt;
| fixed0.0.11, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_TEXENV_BUFFER_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the texture combiner buffer color.&lt;br /&gt;
&lt;br /&gt;
== Framebuffer registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLOR_OPERATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Fragment operation mode&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Blend mode&lt;br /&gt;
|-&lt;br /&gt;
| 16-25&lt;br /&gt;
| 0x0E4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the fragment operation mode and whether to use logic ops or blending.&lt;br /&gt;
&lt;br /&gt;
Fragment operation mode values:&lt;br /&gt;
&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;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Gas&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Shadow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Blend mode values:&lt;br /&gt;
&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;
| Logic op&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Blend&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_BLEND_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, RGB equation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Alpha equation&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, RGB source function&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, RGB destination function&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Alpha source function&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Alpha destination function&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending function.&lt;br /&gt;
&lt;br /&gt;
Equation values:&lt;br /&gt;
&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;
| Add&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Subtract&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse subtract&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Minimum&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Maximum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Source color&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| One minus source color&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Destination color&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| One minus destination color&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| One minus source alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| One minus destination alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Constant color&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| One minus constant color&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| One minus constant alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Source alpha saturate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LOGIC_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Logic op&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the logic op.&lt;br /&gt;
&lt;br /&gt;
Logic op values:&lt;br /&gt;
&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;
| Clear&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| AND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Reverse AND&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Copy&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Set&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Inverted copy&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Noop&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| OR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| XOR&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Inverted AND&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Reverse OR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Inverted OR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_BLEND_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the blending color.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_FRAGOP_ALPHA_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Reference value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure alpha testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_TEST ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Function&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Buffer mask&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Reference value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Mask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil testing.&lt;br /&gt;
&lt;br /&gt;
Function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_STENCIL_OP ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Z-fail operation&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Z-pass operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure stencil result operations.&lt;br /&gt;
&lt;br /&gt;
Operation values:&lt;br /&gt;
&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;
| Keep&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Replace&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Increment&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Decrement&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invert&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Increment and wrap&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Decrement and wrap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DEPTH_COLOR_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Depth test enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Depth function&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Red write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Green write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Blue write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Alpha write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Depth write enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to depth testing and framebuffer write masking.&lt;br /&gt;
&lt;br /&gt;
Note that setting the &amp;quot;Depth test enabled&amp;quot; bit to 0 will &#039;&#039;not&#039;&#039; also disable depth writes. It will instead behave as if the depth function were set to &amp;quot;Always&amp;quot;. To completely disable depth-related operations both the depth test and depth write bits must be disabled.&lt;br /&gt;
&lt;br /&gt;
Depth function values:&lt;br /&gt;
&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;
| Never&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Always&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Equal&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Not equal&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Less than&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Less than or equal&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Greater than&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Greater than or equal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_INVALIDATE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = invalidate)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register invalidates the framebuffer cache. This should be done when changing the framebuffer or when it is cleared before rendering. Note that it does &#039;&#039;&#039;not&#039;&#039;&#039; flush the cache, so it should always be preceded by a write to GPUREG_FRAMEBUFFER_FLUSH.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_FLUSH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = flush)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Writing 1 to this register flushes the framebuffer cache to memory. This should be done after rendering before changing the framebuffer or using rendering results.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow read (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Allow write (0 = disable, 0xF = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the color buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_READ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil read (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth read (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures read access from the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_WRITE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Allow stencil write (0 = disable, 1 = enable)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Allow depth write (0 = disable, 1 = enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures write access to the depth and stencil buffers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer data format.&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| 16-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24-bit depth&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 24-bit depth + 8-bit stencil&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_FORMAT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Pixel size&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer data format. Color components are laid out in reverse byte order in memory, with the most significant bits used first.&lt;br /&gt;
&lt;br /&gt;
Pixel size values:&lt;br /&gt;
&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;
| 16-bit color&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 32-bit color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format values:&lt;br /&gt;
&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;
| RGBA8/Gas&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| RGB5A1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| RGB565&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RGBA4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_EARLYDEPTH_TEST2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register enables the early depth test.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_BLOCK32 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Render block mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer block mode. To untile the color buffer when using the 32x32 block format, use bit 16 of the [[GPU/External_Registers#Transfer_Engine|display transfer flags]]. It is unknown if there are any advantages to using the 32x32 format.&lt;br /&gt;
&lt;br /&gt;
Render block mode values:&lt;br /&gt;
&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;
| 8x8 blocks&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32x32 blocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_DEPTHBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Depth buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the depth buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_COLORBUFFER_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Color buffer physical address &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the color buffer physical address.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FRAMEBUFFER_DIM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| unsigned, Width&lt;br /&gt;
|-&lt;br /&gt;
| 12-21&lt;br /&gt;
| unsigned, Height - 1&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the framebuffer dimensions.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Planar shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Planar shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Planar shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light planar shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading minimum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, View shading maximum intensity&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, View shading density attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light view shading.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_LIGHT_Z_COLOR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, View shading effect in line-of-sight direction&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Gas color LUT input&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT.&lt;br /&gt;
&lt;br /&gt;
Color LUT input values:&lt;br /&gt;
&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;
| Gas density&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Light factor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set what index to write to with GPUREG_GAS_LUT_DATA&#039;&#039;i&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_GAS_LUT_DATA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the gas look-up table, starting at the index selected with GPUREG_GAS_LUT_INDEX.&lt;br /&gt;
&lt;br /&gt;
==== Gas Look-Up Table ====&lt;br /&gt;
&lt;br /&gt;
16 elements:&lt;br /&gt;
&lt;br /&gt;
First 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| signed, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| signed, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| signed, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Last 8 elements:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GAS_DELTAZ_DEPTH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| fixed0.16.8, Depth direction attenuation proportion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure the gas depth direction attenuation proportion.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_FRAGOP_SHADOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Sum of penumbra scale and penumbra bias&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Penumbra scale with reversed sign&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure shadow properties.&lt;br /&gt;
&lt;br /&gt;
== Fragment lighting registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPECULAR1 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_DIFFUSE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, X coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.5.10, Y coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.5.10, Z coordinate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, X coordinate (negated)&lt;br /&gt;
|-&lt;br /&gt;
| 16-28&lt;br /&gt;
| fixed1.1.11, Y coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_Z ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-12&lt;br /&gt;
| fixed1.1.11, Z coordinate (negated)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers (along with GPUREG_LIGHT&#039;&#039;i&#039;&#039;_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Light type (0 = positional light, 1 = directional light)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Two side diffuse (0 = one side, 1 = both sides)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Use geometric factor 0 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Use geometric factor 1 (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures a light&#039;s properties.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_BIAS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation bias&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHT&#039;&#039;i&#039;&#039;_ATTENUATION_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-19&lt;br /&gt;
| float1.7.12, Distance attenuation scale&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_AMBIENT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Blue&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| unsigned, Green&lt;br /&gt;
|-&lt;br /&gt;
| 20-27&lt;br /&gt;
| unsigned, Red&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_NUM_LIGHTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Number of active lights - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the number of active lights.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18)&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Fresnel selector&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Light environment configuration&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Apply shadow attenuation to primary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Apply shadow attenuation to secondary color (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| unsigned, Invert shadow attenuation (0 = don&#039;t invert, 1 = invert)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Apply shadow attenuation to alpha component (0 = don&#039;t apply, 1 = apply)&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Bump map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Shadow map texture unit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Clamp highlights (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Bump mode&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0x1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the light environment.&lt;br /&gt;
&lt;br /&gt;
Fresnel selector values:&lt;br /&gt;
&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;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Primary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Secondary alpha&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Primary and secondary alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue.&lt;br /&gt;
&lt;br /&gt;
Light environment configuration values:&lt;br /&gt;
&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;
! Available LUTs&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Configuration 0&lt;br /&gt;
| D0, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Configuration 1&lt;br /&gt;
| FR, RR, SP, DA&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Configuration 2&lt;br /&gt;
| D0, D1, RR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Configuration 3&lt;br /&gt;
| D0, D1, FR, DA&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Configuration 4&lt;br /&gt;
| All except for FR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Configuration 5&lt;br /&gt;
| All except for D1&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Configuration 6&lt;br /&gt;
| All except for RB and RG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Configuration 7&lt;br /&gt;
| All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bump mode values:&lt;br /&gt;
&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;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use as bump map&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Use as tangent map&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x1&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to disable various aspects of the light environment.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Starting index&lt;br /&gt;
|-&lt;br /&gt;
| 8-12&lt;br /&gt;
| unsigned, Look-up table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; register writes to.&lt;br /&gt;
&lt;br /&gt;
Lookup table values:&lt;br /&gt;
&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;
| D0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| D1&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| RB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RG&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| RR&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| SP0-7&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| DA0-7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_ENABLE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Disabled (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUT_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| LUT data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lighting LUT data is written here.&lt;br /&gt;
&lt;br /&gt;
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) &amp;amp; 0xFF.&lt;br /&gt;
&lt;br /&gt;
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead.&lt;br /&gt;
&lt;br /&gt;
Format of an entry:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| fixed0.0.12, Entry value&lt;br /&gt;
|-&lt;br /&gt;
| 12-23&lt;br /&gt;
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_ABS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls whether the absolute value of the input is taken before using a LUT.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SELECT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Input selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Input selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Input selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Input selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Input selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Input selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Input selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the input from LUTs.&lt;br /&gt;
&lt;br /&gt;
Input selector values:&lt;br /&gt;
&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;
| N·H&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| V·H&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| N·V&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| L·N&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| -L·P (aka Spotlight aka SP)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| cos φ (aka CP)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LUTINPUT_SCALE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, Scaler selector for D0&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, Scaler selector for D1&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, Scaler selector for SP&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, Scaler selector for FR&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, Scaler selector for RB&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, Scaler selector for RG&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, Scaler selector for RR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register controls the scaling that is applied to the output of a LUT.&lt;br /&gt;
&lt;br /&gt;
Scaler selector values:&lt;br /&gt;
&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;
| 1x&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2x&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4x&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8x&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0.25x&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_LIGHTING_LIGHT_PERMUTATION ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| unsigned, ID of the 1st enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| unsigned, ID of the 2nd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 8-10&lt;br /&gt;
| unsigned, ID of the 3rd enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 12-14&lt;br /&gt;
| unsigned, ID of the 4th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 16-18&lt;br /&gt;
| unsigned, ID of the 5th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 20-22&lt;br /&gt;
| unsigned, ID of the 6th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 24-26&lt;br /&gt;
| unsigned, ID of the 7th enabled light&lt;br /&gt;
|-&lt;br /&gt;
| 28-30&lt;br /&gt;
| unsigned, ID of the 8th enabled light&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the IDs of enabled light sources.&lt;br /&gt;
&lt;br /&gt;
== Geometry pipeline registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_ATTRIBBUFFERS_LOC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1-28&lt;br /&gt;
| unsigned, Vertex arrays base address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the base address of all vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 0 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 0 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 1 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 2 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 3 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-17&lt;br /&gt;
| unsigned, Vertex attribute 4 type&lt;br /&gt;
|-&lt;br /&gt;
| 18-19&lt;br /&gt;
| unsigned, Vertex attribute 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 20-21&lt;br /&gt;
| unsigned, Vertex attribute 5 type&lt;br /&gt;
|-&lt;br /&gt;
| 22-23&lt;br /&gt;
| unsigned, Vertex attribute 5 size&lt;br /&gt;
|-&lt;br /&gt;
| 24-25&lt;br /&gt;
| unsigned, Vertex attribute 6 type&lt;br /&gt;
|-&lt;br /&gt;
| 26-27&lt;br /&gt;
| unsigned, Vertex attribute 6 size&lt;br /&gt;
|-&lt;br /&gt;
| 28-29&lt;br /&gt;
| unsigned, Vertex attribute 7 type&lt;br /&gt;
|-&lt;br /&gt;
| 30-31&lt;br /&gt;
| unsigned, Vertex attribute 7 size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the first 8 vertex attributes.&lt;br /&gt;
&lt;br /&gt;
Vertex attribute type values:&lt;br /&gt;
&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;
| Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unsigned byte&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Short&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex attribute size values:&lt;br /&gt;
&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;
| 8 bits&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 16 bits&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 24 bits&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 32 bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFERS_FORMAT_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Vertex attribute 8 type&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| unsigned, Vertex attribute 8 size&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| unsigned, Vertex attribute 9 type&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| unsigned, Vertex attribute 9 size&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Vertex attribute 10 type&lt;br /&gt;
|-&lt;br /&gt;
| 10-11&lt;br /&gt;
| unsigned, Vertex attribute 10 size&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| unsigned, Vertex attribute 11 type&lt;br /&gt;
|-&lt;br /&gt;
| 14-15&lt;br /&gt;
| unsigned, Vertex attribute 11 size&lt;br /&gt;
|-&lt;br /&gt;
| 16-27&lt;br /&gt;
| unsigned, Fixed vertex attribute mask&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total vertex attribute count - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the types and sizes of the last 4 vertex attributes, along with the attribute mask and the total attribute count.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFERS_FORMAT_LOW for vertex attribute type and size values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the offset of a vertex array from the base vertex arrays address.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 2&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 3&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 4&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Component 5&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Component 6&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Component 7&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Component 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the first 8 component types of a vertex array.&lt;br /&gt;
&lt;br /&gt;
Component values:&lt;br /&gt;
&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;
| Vertex attribute 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Vertex attribute 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Vertex attribute 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Vertex attribute 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Vertex attribute 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Vertex attribute 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Vertex attribute 6&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Vertex attribute 7&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Vertex attribute 8&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Vertex attribute 9&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Vertex attribute 10&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Vertex attribute 11&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 4-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 8-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 12-byte padding&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 16-byte padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Component 9&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Component 10&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Component 11&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Component 12&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Bytes per vertex&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Total number of components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the last 4 component types of a vertex array, along with the bytes per vertex and the total number of components.&lt;br /&gt;
&lt;br /&gt;
See GPUREG_ATTRIBBUFFER&#039;&#039;i&#039;&#039;_CONFIG1 for component values.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_INDEXBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-27&lt;br /&gt;
| unsigned, Offset from base vertex arrays address&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Index type (0 = unsigned byte, 1 = unsigned short or drawing arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the index array used when drawing elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_NUMVERTICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Number of vertices to render&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertices to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_GEOSTAGE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| unsigned, Geometry shader in use (0 = not in use, 2 = in use)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VERTEX_OFFSET ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Starting vertex offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the offset of the first vertex in an array to render.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_POST_VERTEX_CACHE_NUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Number of entries in the post-vertex cache (usually 0x4 or 0x84)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWARRAYS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw arrays)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex arrays.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_DRAWELEMENTS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = draw elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers drawing vertex array elements.&lt;br /&gt;
&lt;br /&gt;
=== 	GPUREG_VTX_FUNC ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = clear post-vertex cache)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers clearing the post-vertex cache.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Fixed attribute index (0-11, 0xF = immediate-mode submission)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register selects the index of the fixed attribute to be input with GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039;. See [[GPU/Fixed Vertex Attributes]] and [[GPU/Immediate-Mode Vertex Submission]] for usage info.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_FIXEDATTRIB_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA0:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 16-23)&lt;br /&gt;
|-&lt;br /&gt;
| 8-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 4 (W)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA1:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 8-23)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 3 (Z) (bits 0-15)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DATA2:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0-23&lt;br /&gt;
| float1.7.16, Vertex attribute element 1 (X)&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| float1.7.16, Vertex attribute element 2 (Y) (bits 0-7)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accepts four 24-bit floating-point values that make up a vertex attribute. Stored in the fixed attribute currently specified with GPUREG_FIXEDATTRIB_INDEX. If immediate-mode vertex submission is enabled (by writing 0xF to the index register) then vertex data is input here directly.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_SIZE1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-20&lt;br /&gt;
| unsigned, Size of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the size of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 0 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_ADDR1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-28&lt;br /&gt;
| unsigned, Physical address of command buffer 1 &amp;gt;&amp;gt; 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the physical address of the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the first command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_CMDBUF_JUMP1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Trigger (0 = idle, non-zero = execute command buffer 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers a jump to the second command buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_NUM_ATTR ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader input attributes - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader input attributes.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_COM_MODE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Geometry shader configuration enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_START_DRAW_FUNC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Mode (0 = drawing, 1 = configuration)&lt;br /&gt;
|-&lt;br /&gt;
| 1-7&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is related to drawing. When the mode value is set to 1, rendering is not performed properly. When set to 0, changes to the vertex shader configuration registers are not applied correctly. Because of this, it is usually initialized to 1, set to 0 immediately before triggering a draw, and set back to 1 immediately after triggering a draw.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_VSH_OUTMAP_TOTAL2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Number of vertex shader output map registers - 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the number of vertex shader output map registers.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC0 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Misc data (0x00000001 = Reserved geometry shader subdivision in use, 0x01004302 = Particle system in use, 0 otherwise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures miscellaneous geometry shader properties.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GEOSTAGE_CONFIG2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Function indicator (with vertex buffers: 0 = draw elements, 1 = draw arrays, without: 0 = not inputting, 1 = inputting vertex attribute data)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Drawing triangle elements (0 = not, 1 = drawing triangle elements)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the geometry stage of the GPU pipeline.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers, bit 0 is set to 1 before drawing arrays, and cleared to 0 immediately after. When using immediate mode to directly input vertex attribute data, bit 0 is set to 1 before inputting vertex attribute data, and cleared to 0 immediately after. While bit 0 is set to 1, some register writes outside of the 0x200-0x254 and 0x280-0x2DF ranges may be processed incorrectly.&lt;br /&gt;
&lt;br /&gt;
When using vertex buffers and drawing elements in triangles mode, bit 8 is set to 1, else it is set to 0.&lt;br /&gt;
&lt;br /&gt;
===	GPUREG_GSH_MISC1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-4&lt;br /&gt;
| unsigned, Reserved geometry shader subdivision type (2 = Loop, 3 = Catmull-Clark)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures the type of reserved geometry shader subdivision in use. The value is ignored when a subdivision is not in use.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_PRIMITIVE_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned,  Number of vertex shader output map registers - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-9&lt;br /&gt;
| unsigned, Primitive mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register configures primitive drawing.&lt;br /&gt;
&lt;br /&gt;
Primitive mode value:&lt;br /&gt;
&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;
| Triangles&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Triangle strip&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Triangle fan&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Geometry primitive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_RESTART_PRIMITIVE ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Trigger (0 = idle, 1 = reset primitive)&lt;br /&gt;
|-&lt;br /&gt;
| 1-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register triggers resetting primitive drawing.&lt;br /&gt;
&lt;br /&gt;
== Shader registers ==&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_BOOLUNIFORM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Boolean register b0 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Boolean register b1 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Boolean register b2 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Boolean register b3 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Boolean register b4 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Boolean register b5 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Boolean register b6 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Boolean register b7 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Boolean register b8 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Boolean register b9 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Boolean register b10 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Boolean register b11 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Boolean register b12 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Boolean register b13 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Boolean register b14 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Boolean register b15 value (0 = false, 1 = true)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set a shader unit&#039;s boolean registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INTUNIFORM_I&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; X value&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Y value&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; Z value&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Integer register i&#039;&#039;i&#039;&#039; W value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These registers are used to set a shader unit&#039;s integer registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_INPUTBUFFER_CONFIG ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Input vertex attributes - 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| unsigned, Use reserved geometry shader subdivision (0 = don&#039;t use, 1 = use) (always 0 for vertex shaders)&lt;br /&gt;
|-&lt;br /&gt;
| 16-23&lt;br /&gt;
| 0x0&lt;br /&gt;
|-&lt;br /&gt;
| 24-31&lt;br /&gt;
| unsigned, Use geometry shader (0x8 = use, 0xA0 = don&#039;t use) (always 0xA0 for vertex shaders)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to configure a shader unit&#039;s input buffer.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ENTRYPOINT ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15&lt;br /&gt;
| unsigned, Code entry point offset, in 32-bit words&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets a shader unit&#039;s code entry point.&lt;br /&gt;
&lt;br /&gt;
For geometry shaders, this sets the entry point for the single shader unit which can be dedicated to running geometry shaders, regardless of the current geometry stage mode. This is means that while this register is normally used to set the geometry shader entry point, it can also be used to set this single shader unit to run from a different entry point than the other three, even when running a vertex shader.&lt;br /&gt;
&lt;br /&gt;
For vertex shaders, this sets the entry point for the shader units set to vertex shader mode. Depending on the current geometry stage mode this can include either all 4 shader units or just 3 of them. &lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_LOW ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 0 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 1 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 2 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 3 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 4 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 5 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 6 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 7 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for the first 8 attributes. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 1st attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_ATTRIBUTES_PERMUTATION_HIGH ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3&lt;br /&gt;
| unsigned, Vertex attribute 8 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 4-7&lt;br /&gt;
| unsigned, Vertex attribute 9 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 8-11&lt;br /&gt;
| unsigned, Vertex attribute 10 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 12-15&lt;br /&gt;
| unsigned, Vertex attribute 11 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 16-19&lt;br /&gt;
| unsigned, Vertex attribute 12 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 20-23&lt;br /&gt;
| unsigned, Vertex attribute 13 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 24-27&lt;br /&gt;
| unsigned, Vertex attribute 14 input register index&lt;br /&gt;
|-&lt;br /&gt;
| 28-31&lt;br /&gt;
| unsigned, Vertex attribute 15 input register index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit input register index which will correspond to each attribute contained by the input buffer (which in the case of geometry shaders is the vertex shader output buffer) for attributes 8 through 15. For example, having bits 0-3 set to 5 means that, in the shader program, v5 will contain the input buffer&#039;s 9th attribute.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OUTMAP_MASK ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| unsigned, Output register o0 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| unsigned, Output register o1 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| unsigned, Output register o2 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| unsigned, Output register o3 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| unsigned, Output register o4 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| unsigned, Output register o5 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| unsigned, Output register o6 enabled (0 = disabled, 1 = enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| unsigned, Output register o7 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| unsigned, Output register o8 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| unsigned, Output register o9 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| unsigned, Output register o10 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| unsigned, Output register o11 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| unsigned, Output register o12 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| unsigned, Output register o13 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| unsigned, Output register o14 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| unsigned, Output register o15 enabled (0 = disabled, 1 = enabled) (vertex shader only)&lt;br /&gt;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| 0x0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register toggles a shader unit&#039;s output registers.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_END ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Signal transfer end (0 = idle, non-zero = signal)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register&#039;s value should be set to 1 in order to finalize the transfer of shader code.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-7&lt;br /&gt;
| unsigned, Target floating-point register index (range 0-95, where 0 = c0 and 95 = c95)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| unsigned, Transfer mode (0 = float1.7.16, 1 = float1.8.23)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register sets the shader unit&#039;s target floating-point register and transfer mode for the data transfer system. As such it is typically used right before [[#GPUREG_SH_FLOATUNIFORM_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039;]], though writing to one register does not make writing to the other mandatory.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| Floating-point register component data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the components of a shader unit&#039;s floating-point registers, each having 4 components. The data format which should be written to it depends on the transfer mode set with [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]]. This register functions as a FIFO queue: after each time a 4-component uniform register is successfully set, the target register index is incremented, meaning that groups of uniforms with contiguous register IDs can be set with only one initial write to [[#GPUREG_SH_FLOATUNIFORM_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_FLOATUNIFORM_INDEX]].&lt;br /&gt;
&lt;br /&gt;
* In the case of float24 transfer mode, data should be sent by writing three words which are the concatenation of the float24 value of the uniform register&#039;s 4 components, in the reverse order. Assuming each letter corresponds to 4 bits, the format becomes:&lt;br /&gt;
** first word : ZZWWWWWW&lt;br /&gt;
** second word : YYYYZZZZ&lt;br /&gt;
** third word : XXXXXXYY&lt;br /&gt;
* In the case of float32 transfer mode, data should be sent by writing four words which are each the float32 value of the uniform register&#039;s 4 components, in the reverse order.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader code offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader code data transferred through [[#GPUREG_SH_CODETRANSFER_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader instruction data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader code data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader code memory bank at the offset initially set by [[#GPUREG_SH_CODETRANSFER_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_CODETRANSFER_INDEX]]. The offset in question is incremented after each write to this register.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-11&lt;br /&gt;
| unsigned, Target shader operand descriptor offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to set the offset at which upcoming shader operand descriptor data transferred through [[#GPUREG_SH_OPDESCS_DATAi|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039;]] should be written.&lt;br /&gt;
&lt;br /&gt;
=== GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_DATA&#039;&#039;i&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bits&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-31&lt;br /&gt;
| unsigned, Shader operand descriptor data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This register is used to transfer shader operand descriptor data. This register behaves as a FIFO queue: each write to this register writes the provided value to the GPU shader operand descriptor memory bank at the offset initially set by [[#GPUREG_SH_OPDESCS_INDEX|GPUREG_&#039;&#039;SH&#039;&#039;_OPDESCS_INDEX]]. The offset in question is incremented after each write to this register.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19589</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19589"/>
		<updated>2017-02-11T22:24:35Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| || ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || || style=&amp;quot;background: #bbbbbb&amp;quot; | G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | ? || || style=&amp;quot;background: #bbbbbb&amp;quot; | G ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSy || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || JACK_L || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #bbbbbb&amp;quot; | G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Mysteries&amp;diff=19566</id>
		<title>Mysteries</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Mysteries&amp;diff=19566"/>
		<updated>2017-02-09T23:43:54Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of mysteries.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* What is the CTR abbreviation?&lt;br /&gt;
: C may stand for Chiheisen (&amp;quot;horizon&amp;quot; in Japanese, the O3DS&#039;s codename being &amp;quot;Project Horizon&amp;quot;).&lt;br /&gt;
:: Not true, Horizon refers to the OS.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Why are there two CTRCARD controllers? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; Also [http://problemkaputt.de/twl-core.jpg DSi SoC pinout] shows evidence of dual NTRCARD controllers on the final DSi SoC. (This was a [http://i.imgur.com/0kJlbEw.png planned feature] of the DSi before being axed later in development)&lt;br /&gt;
&lt;br /&gt;
=== Why are there two EMMC controllers? ===&lt;br /&gt;
&#039;&#039;&#039;Theory:&#039;&#039;&#039; At some point during 3DS hardware development there was an idea to split up CTR and TWL nand into two different chips.&lt;br /&gt;
=== Is there a JTAG? ===&lt;br /&gt;
=== Is there more than one revision of the bootrom? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; Bootrom visible portion has been dumped on 3DS, 3DSXL, 2DS, New3DS. All matching exactly.&lt;br /&gt;
=== What is the EMMC controller @ 0x10100000 doing? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; There&#039;s dead code in NWM referencing it.&lt;br /&gt;
=== Why did they put NTRCARD accessible from ARM11? ===&lt;br /&gt;
&#039;&#039;&#039;Theory:&#039;&#039;&#039; At some point during 3DS hardware development there was a concept where ARM11 ran a menu with DS(i) icons while ARM9 was in TWL mode.&lt;br /&gt;
&lt;br /&gt;
=== Is there a secret message embedded in the 3DS keyscrambler constant? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; TWL key scrambler constant was &amp;quot;Nintendo Co., Ltd&amp;quot; in Japanese (&amp;quot;任天堂株式会社&amp;quot;), UTF-16LE encoded, with byte order mark.  The 3DS key scrambler constant, by comparison, is random-looking.&lt;br /&gt;
&lt;br /&gt;
=== What is the PDN abbreviation? ===&lt;br /&gt;
: Power distribution network&lt;br /&gt;
&lt;br /&gt;
=== How does Nintendo reflash bricked systems? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; The boot ROM will boot from SPI flash if the FIRM partitions are both corrupt.  But if, say, Home Menu gets deleted, the system is dead, and boot ROM would still see the NAND as valid.  How does Nintendo&#039;s refurbishing center reflash such systems?&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
=== What was the problem in &amp;quot;initial program loader&amp;quot; that was mentioned in an FCC filing by Nintendo for 2DS? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; http://www.neogaf.com/forum/showthread.php?t=814624&amp;amp;page=1&lt;br /&gt;
=== What did SVC 0x74 in the ARM11 kernel do before it got stubbed? ===&lt;br /&gt;
=== What is the PTM abbreviation? ===&lt;br /&gt;
=== Why is the DTCM not used anywhere except bootrom? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; Bootrom is known to use part of DTCM as state, memsetting it to 0 when it&#039;s done. After that, it is never used again.&lt;br /&gt;
=== How is CTRAging launched during factory setup? ===&lt;br /&gt;
&#039;&#039;&#039;Background:&#039;&#039;&#039; No TestMenu version is capable of launching CTRAging directly: O3DS factory TestMenu can only launch DevMenu installed on NAND, the inserted cartridge and the TWL/AGB test apps; N3DS factory TestMenu can only launch DevMenu installed on NAND, the inserted cartridge and System Settings.&lt;br /&gt;
=== Why are there 4 stubbed syscalls named SendSyncRequest1-4? ===&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19551</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19551"/>
		<updated>2017-02-08T21:28:22Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFICNT|CFG11_WIFICNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFIUNK|CFG11_WIFIUNK]]&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old FCRAM DMA cutoff size, 0 = no protection.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New FCRAM DMA cutoff size, 0 = no protection.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| AXIWRAM protection, 0 = accessible.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10-9&lt;br /&gt;
| QTM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 31-11&lt;br /&gt;
| Zeroes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old FCRAM DMA cutoff, it protects starting from 0x28000000-(0x800000*x) until end of FCRAM. There is no way to protect the first 0x800000-bytes.&lt;br /&gt;
&lt;br /&gt;
For the new FCRAM DMA cutoff, it protects starting from 0x30000000-(0x800000*x) until end of FCRAM. When the old FCRAM cutoff is set to non-zero, the first 0x800000-bytes bytes of new FCRAM are protected.&lt;br /&gt;
&lt;br /&gt;
On New3DS the old+new FCRAM cutoff can be used at the same time, however this isn&#039;t done officially.&lt;br /&gt;
&lt;br /&gt;
For the QTM DMA cutoff, it protects starting from 0x1F400000-(0x100000*x) until end of QTM mem.&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
When this register is set to value 0, the GPU can access the entire FCRAM, AXIWRAM, and on New3DS all QTM-mem.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with [[11.3.0-36|v11.3]].&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFICNT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 0&lt;br /&gt;
| Enable wifi subsystem&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFIUNK==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 4&lt;br /&gt;
| Wifi-related? Set to 1 very early in NWM-module.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19550</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19550"/>
		<updated>2017-02-08T19:23:01Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFICNT|CFG11_WIFICNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old FCRAM DMA cutoff size, 0 = no protection.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New FCRAM DMA cutoff size, 0 = no protection.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| AXIWRAM protection, 0 = accessible.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10-9&lt;br /&gt;
| QTM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 31-11&lt;br /&gt;
| Zeroes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old FCRAM DMA cutoff, it protects starting from 0x28000000-(0x800000*x) until end of FCRAM. There is no way to protect the first 0x800000-bytes.&lt;br /&gt;
&lt;br /&gt;
For the new FCRAM DMA cutoff, it protects starting from 0x30000000-(0x800000*x) until end of FCRAM. When the old FCRAM cutoff is set to non-zero, the first 0x800000-bytes bytes of new FCRAM are protected.&lt;br /&gt;
&lt;br /&gt;
On New3DS the old+new FCRAM cutoff can be used at the same time, however this isn&#039;t done officially.&lt;br /&gt;
&lt;br /&gt;
For the QTM DMA cutoff, it protects starting from 0x1F400000-(0x100000*x) until end of QTM mem.&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
When this register is set to value 0, the GPU can access the entire FCRAM, AXIWRAM, and on New3DS all QTM-mem.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with [[11.3.0-36|v11.3]].&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFICNT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 0&lt;br /&gt;
| Enable wifi subsystem&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=19549</id>
		<title>GPIO Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=19549"/>
		<updated>2017-02-08T19:19:46Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* GPIO Bits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= GPIO Service Names =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service name&lt;br /&gt;
!  Permitted GPIO bitmasks&lt;br /&gt;
|-&lt;br /&gt;
| gpio:CDC&lt;br /&gt;
| 0x48&lt;br /&gt;
|-&lt;br /&gt;
| gpio:MCU&lt;br /&gt;
| 0x48020&lt;br /&gt;
|-&lt;br /&gt;
| gpio:HID&lt;br /&gt;
| 0x4301&lt;br /&gt;
|-&lt;br /&gt;
| gpio:NWM&lt;br /&gt;
| 0x40020&lt;br /&gt;
|-&lt;br /&gt;
| gpio:IR&lt;br /&gt;
| 0xEC0&lt;br /&gt;
|-&lt;br /&gt;
| gpio:NFC&lt;br /&gt;
| 0x13000&lt;br /&gt;
|-&lt;br /&gt;
| gpio:QTM&lt;br /&gt;
| 0x20000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the mapping between GPIO bitmasks and IRQs see: [[GPIO:BindInterrupt#Supported_values]].&lt;br /&gt;
&lt;br /&gt;
The commands for these services are identical.&lt;br /&gt;
&lt;br /&gt;
The input bitmask for each command is masked with the above permission bitmask, if the result is non-zero an error is occurred.&lt;br /&gt;
&lt;br /&gt;
= GPIO Services =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
!  Uses [[GPIO_Registers|GPIO Regs]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001....&lt;br /&gt;
| ?(u32 unk1,u32* ret)&lt;br /&gt;
| 0x10147010, 0x10147020&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
| 0x10147010, 0x10147020&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?(u32 unk1,u32* ret)&lt;br /&gt;
| 0x10147010, 0x10147024&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040080&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
| 0x10147010, 0x10147024&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| ?(u32 unk1,u32* ret)&lt;br /&gt;
| 0x10147010, 0x10147024&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
| 0x10147010, 0x10147024&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| [[GPIO:GetGPIOData|GetGPIOData]]&lt;br /&gt;
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080080&lt;br /&gt;
| [[GPIO:SetGPIOData|SetGPIOData]]&lt;br /&gt;
| 0x10147010, 0x10147014, 0x10147020, 0x10147028&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090082&lt;br /&gt;
| [[GPIO:BindInterrupt|BindInterrupt]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0042&lt;br /&gt;
| [[GPIO:UnbindInterrupt|UnbindInterrupt]]&lt;br /&gt;
| None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=GPIO Bitmask=&lt;br /&gt;
The bitmask used by the service commands determines which bits in the GPIO registers to access. The output value from [[GPIO:GetGPIOData|GetGPIOData]] uses the same format as the bitmask: the values of bits in the output field are set to the value of GPIO data when those bits are set in the input bitmask.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bits in the bitmask&lt;br /&gt;
!  Register&lt;br /&gt;
!  Bits from register&lt;br /&gt;
!  Handled with [[GPIO:SetGPIOData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0-2 (0x7)&lt;br /&gt;
| 0x10147000&lt;br /&gt;
| 0-2&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| 3-4 (0x18)&lt;br /&gt;
| 0x10147010&lt;br /&gt;
| 0-1&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 5 (0x20)&lt;br /&gt;
| 0x10147014&lt;br /&gt;
| 0&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 6-17 (0x3FFC0)&lt;br /&gt;
| 0x10147020&lt;br /&gt;
| 0-11&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 18 (0x40000)&lt;br /&gt;
| 0x10147028&lt;br /&gt;
| 0&lt;br /&gt;
| Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==GPIO Bits==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Bitmask&lt;br /&gt;
!  Accessible via GPIO service&lt;br /&gt;
!  Used by&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0x1&lt;br /&gt;
| gpio:HID&lt;br /&gt;
| HID-sysmodule&lt;br /&gt;
| Used with [[HID_Shared_Memory|HID]] PAD state.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0x2&lt;br /&gt;
| None&lt;br /&gt;
| &lt;br /&gt;
| Not known to be used by &#039;&#039;anything&#039;&#039;, with the latest system-version at least.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 0x4&lt;br /&gt;
| None&lt;br /&gt;
| &lt;br /&gt;
| Not known to be used by &#039;&#039;anything&#039;&#039;, with the latest system-version at least.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x8&lt;br /&gt;
| gpio:CDC&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 0x10&lt;br /&gt;
| None&lt;br /&gt;
| &lt;br /&gt;
| Not known to be used by &#039;&#039;anything&#039;&#039;, with the latest system-version at least.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 0x20&lt;br /&gt;
| gpio:MCU, gpio:NWM&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0x40&lt;br /&gt;
| gpio:CDC, gpio:IR&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0x80&lt;br /&gt;
| gpio:IR&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 0x100&lt;br /&gt;
| gpio:HID&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 0x200&lt;br /&gt;
| gpio:HID, gpio:IR&lt;br /&gt;
| HID-sysmodule and IR-sysmodule&lt;br /&gt;
| Unknown, used with ir:rst.&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 0x400&lt;br /&gt;
| gpio:IR&lt;br /&gt;
| IR-sysmodule&lt;br /&gt;
| IR [[IRU:SetIRLEDState|send]]. 1 = IR LED enable, 0 = IR LED disable.&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 0x800&lt;br /&gt;
| gpio:IR&lt;br /&gt;
| IR-sysmodule&lt;br /&gt;
| IR [[IRU:GetIRLEDRecvState|receive]]&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0x1000&lt;br /&gt;
| gpio:NFC&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 0x2000&lt;br /&gt;
| gpio:NFC&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 0x4000&lt;br /&gt;
| gpio:HID&lt;br /&gt;
| HID-sysmodule&lt;br /&gt;
| Used with [[HID_Shared_Memory|HID]]  PAD state.&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 0x8000&lt;br /&gt;
| gpio:MCU&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| 0x10000&lt;br /&gt;
| gpio:NFC&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| 0x20000&lt;br /&gt;
| gpio:QTM&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0x40000&lt;br /&gt;
| gpio:MCU, gpio:NWM&lt;br /&gt;
| NWM-sysmodule&lt;br /&gt;
| Wifi enable. 1=Enabled, 0=Disabled.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=MCU_Services&amp;diff=19548</id>
		<title>MCU Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=MCU_Services&amp;diff=19548"/>
		<updated>2017-02-08T19:17:47Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* MCU wifi service &amp;quot;mcu::NWM&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Only one session can be open per service at a time. If a session is already open for a service, MCU module will wait for the thread handling the session to terminate(triggered by the session being closed by the user process), then it accepts the new session. The commands for each service are handled by separate threads.&lt;br /&gt;
&lt;br /&gt;
=MCU camera service &amp;quot;mcu::CAM&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MCU GPU service &amp;quot;mcu::GPU&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| GetLcdPowerState. This writes the value of I2C-MCU register 0xf bit6 to u8 cmdreply[2], and the value of bit5 from that register to u8 cmdreply[3].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| SetLcdPowerState. This writes the upper LCD bits of MCU register 0x22.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| GetGpuLcdInterfaceState. This writes the value of I2C-MCU register 0xf bit7 to u8 cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| SetGpuLcdInterfaceState. This writes the lower two bits of MCU register 0x22.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| GetMcuFwVerHigh. Called by GSP module&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| GetMcuFwVerLow. Called by GSP module&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0040&lt;br /&gt;
| Set3dLedState&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C....&lt;br /&gt;
| Get3dLedState&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| GetMcuGpuEventHandle. Event handle written to TLS+0x8c. MCU notifications 24 to 29 signal this.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| GetMcuGpuEventReason. Writes some value to TLS+0x88. Called by GSP module&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MCU HID service &amp;quot;mcu::HID&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| Get3dSliderState&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| GetMcuHidEventHandle. MCU notifications 11 and 12 signal this.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| GetMcuHidEventReason&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| [[MCUHID:GetSoundVolume|GetSoundVolume]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0040&lt;br /&gt;
| SetAccelerometerState(int enable). 1 = enable, 0 = disable accelerometer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MCU service &amp;quot;mcu::RTC&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001....&lt;br /&gt;
| SetSystemClock (RTC)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| GetSystemClock (RTC)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0010....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0011....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0012....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0013....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0014....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0015....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0017....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0018....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0019....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0040&lt;br /&gt;
| SetPedometerRecordingMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000&lt;br /&gt;
| GetPedometerState&lt;br /&gt;
|-&lt;br /&gt;
| 0x0021....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0022....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0023....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0024....&lt;br /&gt;
| GetMcuRtcEventHandle. MCU notifications 1, 8, 9, 10, 13, 14 and 15 signal this.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0025....&lt;br /&gt;
| GetMcuRtcEventReason&lt;br /&gt;
|-&lt;br /&gt;
| 0x0026....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0027....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0028....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0029....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| GetShellState. This writes the value of I2C-MCU register 0xf bit1 to u8 cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| GetAdapterState. This writes the value of I2C-MCU register 0xf bit3 to u8 cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| GetBatteryChargeState. This writes the value of I2C-MCU register 0xf bit4 to u8 cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0000&lt;br /&gt;
| [[MCURTC:GetBatteryLevel|GetBatteryLevel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0030....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0031....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0032....&lt;br /&gt;
| [[MCURTC:PowerOff|PowerOff]] (writes 0x1 to i2c MCU device, reg 0x20)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0033....&lt;br /&gt;
| [[MCURTC:HardwareReboot|HardwareReboot]] (writes 0x4 to i2c MCU device, reg 0x20)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0034....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0035....&lt;br /&gt;
| Writes 0x10 to i2c MCU device, reg 0x20&lt;br /&gt;
|-&lt;br /&gt;
| 0x0036....&lt;br /&gt;
| SetWatchdogTimer&lt;br /&gt;
|-&lt;br /&gt;
| 0x0037....&lt;br /&gt;
| GetWatchdogTimer&lt;br /&gt;
|-&lt;br /&gt;
| 0x0038....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0039....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0640&lt;br /&gt;
| [[MCURTC:SetInfoLEDPattern|SetInfoLEDPattern]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0040&lt;br /&gt;
| [[MCURTC:SetInfoLEDPatternHeader|SetInfoLEDPatternHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D0000&lt;br /&gt;
| [[MCURTC:GetInfoLEDStatus|GetInfoLEDStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0040....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0041....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420040&lt;br /&gt;
| [[MCURTC:SetBatteryEmptyLEDPattern|SetBatteryEmptyLEDPattern]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0043....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0044....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0045....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0046....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0047....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0048....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0049....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x004D....&lt;br /&gt;
| [[MCURTC:ReadHidFlagRegister|ReadHidFlagRegister]] (reads i2c MCU device, reg 0x10)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004E0040&lt;br /&gt;
| [[MCURTC:PublishNotifications|PublishNotifications]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004F....&lt;br /&gt;
| Sets some flag (otherwise set when uploading MCU firmware)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0050....&lt;br /&gt;
| Returns the above flag&lt;br /&gt;
|-&lt;br /&gt;
| 0x00510040&lt;br /&gt;
| [[MCURTC:SetSoftwareClosedFlag|SetSoftwareClosedFlag]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00520000&lt;br /&gt;
| [[MCURTC:GetSoftwareClosedFlag|GetSoftwareClosedFlag]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0053....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0054....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0055....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0056....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0057....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0058....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00590040&lt;br /&gt;
| [[MCURTC:SetLegacyJumpProhibitedFlag|SetLegacyJumpProhibitedFlag]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005A0000&lt;br /&gt;
| [[MCURTC:GetLegacyJumpProhibitedFlag|GetLegacyJumpProhibitedFlag]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that using invalid input with these InfoLED/SetBatteryEmptyLEDPattern commands(especially SetInfoLEDPattern) can cause the system to be bricked(however the boot failure may not begin immediately after using the invalid parameters).&lt;br /&gt;
&lt;br /&gt;
=MCU sound service &amp;quot;mcu::SND&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001....&lt;br /&gt;
| GetSoundVolume&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MCU wifi service &amp;quot;mcu::NWM&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001....&lt;br /&gt;
| SetWirelessLedState&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| GetWirelessLedState&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| Sets GPIO 0x20 high/low?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004....&lt;br /&gt;
| Gets GPIO 0x20 high/low?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| SetEnableWifiGpio&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| GetEnableWifiGpio&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| [[MCUNWM:SetWirelessDisabledFlag|SetWirelessDisabledFlag]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| [[MCUNWM:GetWirelessDisabledFlag|GetWirelessDisabledFlag]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MCU service &amp;quot;mcu::HWC&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010082&lt;br /&gt;
| [[MCUHWC:ReadRegister|ReadRegister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[MCUHWC:WriteRegister|WriteRegister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| [[MCUHWC:GetInfoRegisters|GetInfoRegisters]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[MCUHWC:GetBatteryVoltage|GetBatteryVoltage]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[MCUHWC:GetBatteryLevel|GetBatteryLevel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060040&lt;br /&gt;
| [[MCUHWC:SetPowerLEDPattern|SetPowerLEDPattern]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| [[MCUHWC:SetWifiLEDState|SetWifiLEDState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080040&lt;br /&gt;
| [[MCUHWC:SetCameraLEDPattern|SetCameraLEDPattern]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| [[MCUHWC:Set3DLEDState|Set3DLEDState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0640&lt;br /&gt;
| This is the same as [[MCURTC:SetInfoLEDPattern]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[MCUHWC:GetSoundVolume|GetSoundVolume]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F....&lt;br /&gt;
| GetRtcTime&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| GetMcuFwVerHigh&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| GetMcuFwVerLow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MCU service &amp;quot;mcu::PLS&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
RTC-related? Each of these seems to retrieve a second counter from a different RTC register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009....&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=MCU codec service &amp;quot;mcu::CDC&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=New3DS=&lt;br /&gt;
The Old3DS/New3DS MCU sysmodules are identical except that the MCU firmware binary written via I2C is different. The size of that binary is the same. The only different words in .text are for the version of that MCU fw binary.&lt;br /&gt;
&lt;br /&gt;
=MCU firmware versions=&lt;br /&gt;
&lt;br /&gt;
These reside in mcu-module .rodata, are uploaded to MCU register 0x05 and are usually size 0x4003 bytes. (0x4000 bytes with 3 byte magic &amp;quot;jhl&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
There exists an alternate code path where uploading is done using register 0x3B (decided by making some nonsense conclusions about registers 0x0F and 0x10). This may be a &amp;quot;hack&amp;quot; around early versions of MCU? Register 0x3B is RTC-related on recent versions of MCU, and the &amp;quot;nonsense&amp;quot; condition is not met even on factory MCU firmware.&lt;br /&gt;
&lt;br /&gt;
On dev-units, the user-facing representation of this firmware version is displayed by first subtracting 0x10 from the major field (raw register 0x00). It is these user-facing versions that are displayed in the table below. It is unknown what bit4 (0x10) actually represents, but it is seemingly always set.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title version&lt;br /&gt;
!  Firmware&lt;br /&gt;
|-&lt;br /&gt;
| New3DS v8192/safe v9217 (latest)&lt;br /&gt;
| 3.56&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS v6145 to v8192 (latest)&lt;br /&gt;
| 2.37&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS v5122&lt;br /&gt;
| 2.35&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS v4102&lt;br /&gt;
| 2.30&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS v3072&lt;br /&gt;
| 2.16&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS v2048&lt;br /&gt;
| 1.52&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS v1026&lt;br /&gt;
| 1.51&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS v0/safe v0&lt;br /&gt;
| 1.20&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS factory&lt;br /&gt;
| 1.07&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19543</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19543"/>
		<updated>2017-02-07T23:10:19Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* CFG11_GPUPROT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old FCRAM DMA cutoff size, 0 = no protection.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New FCRAM DMA cutoff size, 0 = no protection.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| AXIWRAM protection, 0 = accessible.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10-9&lt;br /&gt;
| QTM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 31-11&lt;br /&gt;
| Zeroes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old FCRAM DMA cutoff, it protects starting from 0x28000000-(0x800000*x) until end of FCRAM. There is no way to protect the first 0x800000-bytes.&lt;br /&gt;
&lt;br /&gt;
For the new FCRAM DMA cutoff, it protects starting from 0x30000000-(0x800000*x) until end of FCRAM. When the old FCRAM cutoff is set to non-zero, the first 0x800000-bytes bytes of new FCRAM are protected.&lt;br /&gt;
&lt;br /&gt;
On New3DS the old+new FCRAM cutoff can be used at the same time, however this isn&#039;t done officially.&lt;br /&gt;
&lt;br /&gt;
For the QTM DMA cutoff, it protects starting from 0x1F400000-(0x100000*x) until end of QTM mem.&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
When this register is set to value 0, the GPU can access the entire FCRAM, AXIWRAM, and on New3DS all QTM-mem.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with [[11.3.0-36|v11.3]].&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19531</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19531"/>
		<updated>2017-02-07T18:28:10Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* CFG11_GPUPROT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old FCRAM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New FCRAM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| AXIWRAM protection, 0 = accessible.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10-9&lt;br /&gt;
| QTM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 31-11&lt;br /&gt;
| Zeroes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old FCRAM DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the new FCRAM DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the QTM DMA cutoff, it appears to start at 0x1F400000-(0x100000*x) length 0x100000*x&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with [[11.3.0-36|v11.3]].&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19528</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19528"/>
		<updated>2017-02-07T18:08:12Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old FCRAM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New FCRAM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| ?!?!?!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10-9&lt;br /&gt;
| QTM DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 31-11&lt;br /&gt;
| Zeroes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old FCRAM DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the new FCRAM DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the QTM DMA cutoff, it appears to start at 0x1F400000-(0x100000*x) length 0x100000*x&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19526</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19526"/>
		<updated>2017-02-07T17:56:26Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: yellows8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| ?!?!?!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 9&lt;br /&gt;
| ?!?!?!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10&lt;br /&gt;
| Protect upper QTM mem&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 31-11&lt;br /&gt;
| Zeroes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old GPU DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the new GPU DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19525</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19525"/>
		<updated>2017-02-07T17:23:14Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* CFG11_GPUPROT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| Enable old GPU DMA cutoff&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 9&lt;br /&gt;
| ?!?!?!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10&lt;br /&gt;
| Enable new GPU DMA cutoff&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 31-11&lt;br /&gt;
| Zeroes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old GPU DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the new GPU DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19524</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19524"/>
		<updated>2017-02-07T17:22:43Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| Enable old GPU DMA cutoff&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 9&lt;br /&gt;
| ?!?!?!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10&lt;br /&gt;
| Enable new GPU DMA cutoff&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old GPU DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the new GPU DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19523</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19523"/>
		<updated>2017-02-07T16:59:28Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: Thanks profi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| Enable old GPU DMA cutoff&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10&lt;br /&gt;
| Enable new GPU DMA cutoff&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old GPU DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
For the new GPU DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
On cold boot this reg is set to 0.&lt;br /&gt;
&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19522</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19522"/>
		<updated>2017-02-07T16:49:43Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* CFG11_GPUPROT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3-0&lt;br /&gt;
| Old GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 7-4&lt;br /&gt;
| New GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| Enable old GPU DMA cutoff&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10&lt;br /&gt;
| Enable new GPU DMA cutoff&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old GPU DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
For the new GPU DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19521</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19521"/>
		<updated>2017-02-07T16:45:45Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPUPROT|CFG11_GPUPROT]]&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPUPROT==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 0-2&lt;br /&gt;
| Old GPU DMA cutoff size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 3&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 4-7&lt;br /&gt;
| New GPU DMA cutoff&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| 8&lt;br /&gt;
| Enable old GPU DMA cutoff&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| 10&lt;br /&gt;
| Enable new GPU DMA cutoff&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the old GPU DMA cutoff, it appears to start at 0x28000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
For the new GPU DMA cutoff, it appears to start at 0x30000000-(0x800000*x) length 0x800000*x.&lt;br /&gt;
&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19513</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19513"/>
		<updated>2017-02-07T16:01:57Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_DATA|CFG11_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SHAREDWRAM_32K_CODE|CFG11_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_FIQ_CNT|CFG11_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_WIFI_CNT|CFG11_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SPI_CNT|CFG11_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_CNT|CFG11_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_SOCINFO|CFG11_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_0|CFG11_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_1|CFG11_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_2|CFG11_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_TWLMODE_HID|CFG11_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC|CFG11_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT|CFG11_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_GPU_CNT2|CFG11_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CODEC_CNT|CFG11_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG11_CAMERA_CNT|CFG11_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG11_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CLKCNT|CFG11_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_CNT|CFG11_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|CFG11_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts.&lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== CFG11_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== CFG11_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#CFG11_MPCORE_BOOTCNT|CFG11_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== CFG11_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of CFG11_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  CFG11_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above CFG11_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG11_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#CFG11_BOOTROM_OVERLAY_VAL|CFG11_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==0x10140140==&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==CFG11_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==CFG11_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==CFG11_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==CFG11_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[CFG11_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=19512</id>
		<title>CONFIG9 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=19512"/>
		<updated>2017-02-07T15:58:19Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_SYSPROT9|CFG9_SYSPROT9]]&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_SYSPROT11|CFG9_SYSPROT11]]&lt;br /&gt;
| 0x10000001&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_RST11|CFG9_RST11]]&lt;br /&gt;
| 0x10000002&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG9_DEBUGCTL&lt;br /&gt;
| 0x10000004&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000008&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9, Process9, TwlProcess9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_CARDCTL|CFG9_CARDCTL]]&lt;br /&gt;
| 0x1000000C&lt;br /&gt;
| 2&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_CARDSTATUS|CFG9_CARDSTATUS]]&lt;br /&gt;
| 0x10000010&lt;br /&gt;
| 1&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG9_CARDCYCLES0&lt;br /&gt;
| 0x10000012&lt;br /&gt;
| 2&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG9_CARDCYCLES1&lt;br /&gt;
| 0x10000014&lt;br /&gt;
| 2&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000020&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG9_EXTMEMCNT9|CFG9_EXTMEMCNT9]]&lt;br /&gt;
| 0x10000200&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_MPCORECFG|CFG9_MPCORECFG]]&lt;br /&gt;
| 0x10000FFC&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_BOOTENV|CFG9_BOOTENV]]&lt;br /&gt;
| 0x10010000&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_UNITINFO|CFG9_UNITINFO]]&lt;br /&gt;
| 0x10010010&lt;br /&gt;
| 1&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG9_TWLUNITINFO|CFG9_TWLUNITINFO]]&lt;br /&gt;
| 0x10010014&lt;br /&gt;
| 1&lt;br /&gt;
| Process9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG9_SYSPROT9 ==&lt;br /&gt;
CFG9_SYSPROT9 is used to permanently disable certain security-sensitive ARM9 memory areas until the next hard reset.&lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Disables ARM9 [[Memory_layout|bootrom]](+0x8000) when set to 1. Cannot be cleared to 0 once set to 1.&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Disables [[OTP_Registers|OTP area]] when set to 1. Cannot be cleared to 0 once set to 1.&lt;br /&gt;
| NewKernel9Loader, Process9&lt;br /&gt;
|-&lt;br /&gt;
| 31-2&lt;br /&gt;
| Not used&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On Old 3DS, NATIVE_FIRM reads CFG9_SYSPROT9 to know whether it has previously initialized the TWL console-unique keys using the OTP data.  After setting the TWL console-unique keys, NATIVE_FIRM sets CFG9_SYSPROT9 bit 1 to disable the OTP area.  In subsequent FIRM launches prior to the next reset, NATIVE_FIRM will see that the OTP area is disabled, and skip this step.&lt;br /&gt;
&lt;br /&gt;
On New 3DS, the above is instead done by the [[FIRM#New_3DS_FIRM|Kernel9 loader]].  In addition to using the OTP data for initializing the TWL console-unique keys, the Kernel9 loader will generate the decryption key for NATIVE_FIRM.  The final keyslot for NATIVE_FIRM is preserved, so that at a non-reset FIRM launch, the keyslot can be reused, since the OTP would then be inaccessible.&lt;br /&gt;
&lt;br /&gt;
== CFG9_SYSPROT11 ==&lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Disables ARM11 [[Memory_layout|bootrom]](+0x8000) when set to 1. Cannot be cleared to 0 once set to 1.&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| 31-1&lt;br /&gt;
| Not used&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG9_RST11 ==&lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Presumably takes ARM11 out of reset. Cannot be set to 1 once it has been cleared.&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| 31-1&lt;br /&gt;
| Not used&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 0x10000008 ==&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 1-0&lt;br /&gt;
| ?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3-2&lt;br /&gt;
| AES related? Value 3 written after write to AES_CTL.&lt;br /&gt;
| Boot9, Process9, TwlProcess9&lt;br /&gt;
|-&lt;br /&gt;
| 31-4&lt;br /&gt;
| Reserved&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG9_CARDCTL ==&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 1-0&lt;br /&gt;
| Gamecard active controller select (0=NTRCARD, 1=?, 2=CTRCARD0, 3=CTRCARD1)&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Enable gamecard eject IRQ, maybe?&lt;br /&gt;
| Process9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Depending on the gamecard controller that has been selected, one of the following gamecard registers will become active:&lt;br /&gt;
* Selecting NTRCARD will activate the register space at [[NTRCARD|0x10164000]].&lt;br /&gt;
* Selecting CTRCARD0 will activate the register space at [[CTRCARD|0x10004000]].&lt;br /&gt;
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10005000]].&lt;br /&gt;
&lt;br /&gt;
== CFG9_CARDSTATUS ==&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Cartridge-slot empty (0=inserted, 1=empty)&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| 3-2&lt;br /&gt;
| ?&lt;br /&gt;
| Process9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG9_EXTMEMCNT9 ==&lt;br /&gt;
This register is New3DS-only.&lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Hide extended ARM9 memory (0=hidden, 1=shown)&lt;br /&gt;
| Kernel9 (New3DS)&lt;br /&gt;
|-&lt;br /&gt;
| 31-1&lt;br /&gt;
| Reserved&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG9_MPCORECFG ==&lt;br /&gt;
Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]].&lt;br /&gt;
&lt;br /&gt;
== CFG9_BOOTENV ==&lt;br /&gt;
This register is used to determine what the previous running FIRM was. Its value is kept following an MCU reboot. Its initial value (on a cold boot) is 0. NATIVE_FIRM [[Development_Services_PXI|sets it to 1]] on shutdown/FIRM launch. [[Legacy_FIRM_PXI|LGY FIRM]] writes value 3 here when launching a TWL title, and writes value 7 when launching an AGB title.&lt;br /&gt;
&lt;br /&gt;
NATIVE_FIRM will only launch titles if this is not value 0, and will only save the [[Flash_Filesystem|AGB_FIRM savegame]] to SD if this is value 7.&lt;br /&gt;
&lt;br /&gt;
== CFG9_UNITINFO ==&lt;br /&gt;
This 8-bit register is value zero for retail, non-zero for dev/debug units.&lt;br /&gt;
&lt;br /&gt;
== CFG9_TWLUNITINFO ==&lt;br /&gt;
In the console-unique TWL key-init/etc function the ARM9 copies the u8 value from REG_UNITINFO to this register.&lt;br /&gt;
&lt;br /&gt;
This is also used by TWL_FIRM Process9.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Registers&amp;diff=19510</id>
		<title>PDN Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Registers&amp;diff=19510"/>
		<updated>2017-02-07T15:54:19Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: Plutooo moved page PDN Registers to CONFIG11 Registers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CONFIG11 Registers]]&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19509</id>
		<title>CONFIG11 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG11_Registers&amp;diff=19509"/>
		<updated>2017-02-07T15:54:18Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: Plutooo moved page PDN Registers to CONFIG11 Registers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_SHAREDWRAM_32K_DATA|PDN_SHAREDWRAM_32K_DATA]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_SHAREDWRAM_32K_CODE|PDN_SHAREDWRAM_32K_CODE]]&amp;lt;0-7&amp;gt;&lt;br /&gt;
| 0x10140008&lt;br /&gt;
| 1*8&lt;br /&gt;
| Boot11, Process9, [[DSP Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140100&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140102&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_FIQ_CNT|PDN_FIQ_CNT]]&lt;br /&gt;
| 0x10140104&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140105&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel11.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x10140108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| Related to [[HID_Registers|HID_?]]&lt;br /&gt;
| 0x1014010C&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140140&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_WIFI_CNT|PDN_WIFI_CNT]]&lt;br /&gt;
| 0x10140180&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg, [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_SPI_CNT|PDN_SPI_CNT]]&lt;br /&gt;
| 0x101401C0&lt;br /&gt;
| 4&lt;br /&gt;
| [[SPI Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140200&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140400&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| Clock related?&lt;br /&gt;
| 0x10140410&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#PDN_BOOTROM_OVERLAY_CNT|PDN_BOOTROM_OVERLAY_CNT]]&lt;br /&gt;
| 0x10140420&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#PDN_BOOTROM_OVERLAY_VAL|PDN_BOOTROM_OVERLAY_VAL]]&lt;br /&gt;
| 0x10140424&lt;br /&gt;
| 4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10140428&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_SOCINFO|PDN_SOCINFO]]&lt;br /&gt;
| 0x10140FFC&lt;br /&gt;
| 2&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PDN_GPU_STATUS?&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| 4&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PDN_PTM_0&lt;br /&gt;
| 0x10141008&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PDN_PTM_1&lt;br /&gt;
| 0x1014100C&lt;br /&gt;
| 4&lt;br /&gt;
| [[PTM Services]], TwlBg, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_TWLMODE_0|PDN_TWLMODE_0]]&lt;br /&gt;
| 0x10141100&lt;br /&gt;
| 2&lt;br /&gt;
| TwlProcess9, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_TWLMODE_1|PDN_TWLMODE_1]]&lt;br /&gt;
| 0x10141104&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_TWLMODE_2|PDN_TWLMODE_2]]&lt;br /&gt;
| 0x10141108&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_TWLMODE_HID|PDN_TWLMODE_HID]]&lt;br /&gt;
| 0x1014110A&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PDN_WIFI?&lt;br /&gt;
| 0x1014110C&lt;br /&gt;
| 1&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141110&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141112&lt;br /&gt;
| 2&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_CODEC|PDN_CODEC_0]]&lt;br /&gt;
| 0x10141114&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_CODEC|PDN_CODEC_1]]&lt;br /&gt;
| 0x10141116&lt;br /&gt;
| 2&lt;br /&gt;
| [[CODEC Services]], TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141118&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141119&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10141120&lt;br /&gt;
| 1&lt;br /&gt;
| TwlBg&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_GPU_CNT|PDN_GPU_CNT]]&lt;br /&gt;
| 0x10141200&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_GPU_CNT2|PDN_GPU_CNT2]]&lt;br /&gt;
| 0x10141204&lt;br /&gt;
| 4&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PDN_GPU_CNT3&lt;br /&gt;
| 0x10141210&lt;br /&gt;
| 2&lt;br /&gt;
| Kernel11, TwlBg&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_CODEC_CNT|PDN_CODEC_CNT]]&lt;br /&gt;
| 0x10141220&lt;br /&gt;
| 1&lt;br /&gt;
| Boot11, TwlBg, [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PDN_CAMERA_CNT|PDN_CAMERA_CNT]]&lt;br /&gt;
| 0x10141224&lt;br /&gt;
| 1&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PDN_DSP_CNT&lt;br /&gt;
| 0x10141230&lt;br /&gt;
| 1&lt;br /&gt;
| Process9, [[PDN Services]]&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#PDN_MPCORE_CLKCNT|PDN_MPCORE_CLKCNT]]&lt;br /&gt;
| 0x10141300&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#PDN_MPCORE_CNT|PDN_MPCORE_CNT]]&lt;br /&gt;
| 0x10141304&lt;br /&gt;
| 2&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#PDN_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt;|PDN_MPCORE_BOOTCNT]]&amp;lt;0-3&amp;gt;&lt;br /&gt;
| 0x10141310&lt;br /&gt;
| 1*4&lt;br /&gt;
| NewKernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PDN_SHAREDWRAM_32K_DATA ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/data)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PDN_SHAREDWRAM_32K_CODE ==&lt;br /&gt;
Used for mapping 32K chunks of shared WRAM for DSP data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Master (0=ARM9?, 1=ARM11?, 2 or 3=DSP/code)&lt;br /&gt;
|-&lt;br /&gt;
| 2-4&lt;br /&gt;
| Offset (0..7) (slot 0..7) (LSB of address in 32Kbyte units)&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| Not used (0)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PDN_FIQ_CNT ==&lt;br /&gt;
Writing bit1 to this register disables FIQ interrupts. &lt;br /&gt;
&lt;br /&gt;
This bit is set upon receipt of a FIQ interrupt and when [[SVC|svcUnbindInterrupt]] is called on the FIQ-abstraction [[ARM11_Interrupts#Private_Interrupts|software interrupt]] for the current core.&lt;br /&gt;
It is cleared when binding that software interrupt to an event and just before that event is signaled.&lt;br /&gt;
&lt;br /&gt;
== PDN_SPI_CNT ==&lt;br /&gt;
When the corresponding bit is 0, the bus has to be accessed using the DS SPI registers. Otherwise it has to be accessed using the 3DS SPI registers.&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;
| 0&lt;br /&gt;
| Enable [[SPI Registers]] 0x10160000.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable [[SPI Registers]] 0x10142000.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Enable [[SPI Registers]] 0x10143000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PDN_BOOTROM_OVERLAY_CNT ==&lt;br /&gt;
Bit0: Enable bootrom overlay functionality.&lt;br /&gt;
&lt;br /&gt;
== PDN_BOOTROM_OVERLAY_VAL ==&lt;br /&gt;
The 32-bit value to overlay data-reads to bootrom with. See [[#PDN_MPCORE_BOOTCNT|PDN_MPCORE_BOOTCNT]].&lt;br /&gt;
&lt;br /&gt;
== PDN_SOCINFO ==&lt;br /&gt;
Read-only register.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1 on both Old3DS and New3DS.&lt;br /&gt;
| Boot11&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1 on New3DS.&lt;br /&gt;
| Kernel11&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Clock modifier: if set, use a 3x multiplier, otherwise 2x&lt;br /&gt;
| Kernel11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PDN_MPCORE_CLKCNT ==&lt;br /&gt;
This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable clock multiplier? This must be set to 1 before writing a non-zero value to bit1-2, otherwise freeze.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| Clock multiplier (0=1x, 1=2x, 2=3x, 3=hang)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of PDN_MPCORE_CFG:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Register value&lt;br /&gt;
!  Higher-clockrate bit set in svcKernelSetState Param0&lt;br /&gt;
!  PDN_MPCORE_CFG bit2 set&lt;br /&gt;
!  MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state&lt;br /&gt;
!  Clock-rate multiplier&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1x&lt;br /&gt;
| 268MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x03&lt;br /&gt;
| 3x&lt;br /&gt;
| 804MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2x&lt;br /&gt;
| 536MHz (tested on New3DS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the above PDN_MPCORE_CFG bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).&lt;br /&gt;
&lt;br /&gt;
The following register value(s) were tested on New3DS by patching the kernel:&lt;br /&gt;
* 0x00: Entire system hangs.&lt;br /&gt;
* 0x02: Entire system hangs.&lt;br /&gt;
* 0x03: ARM11 runs at 536MHz.&lt;br /&gt;
* 0x04: Entire system hangs.&lt;br /&gt;
* 0x06: Entire system hangs.&lt;br /&gt;
* 0x07: Same result as 0x05.&lt;br /&gt;
* 0x08: Entire system hangs.&lt;br /&gt;
* 0x09: Entire system hangs.&lt;br /&gt;
* 0x0A: Entire system hangs.&lt;br /&gt;
* 0x0B: Same result as 0x03.&lt;br /&gt;
* 0x0C: Entire system hangs.&lt;br /&gt;
* 0x0D: Same result as 0x05.&lt;br /&gt;
* 0x0E: Entire system hangs.&lt;br /&gt;
* 0x0F: Same result as 0x05.&lt;br /&gt;
* 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.&lt;br /&gt;
&lt;br /&gt;
== PDN_MPCORE_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Power on 3rd ARM11 MPCore maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power on 4th ARM11 MPCore maybe?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PDN_MPCORE_BOOTCNT&amp;lt;0-3&amp;gt; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Enable bootrom instruction overlay, maybe? This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Enable bootrom data overlay. This bit is only writable for core2 and core3.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Has core booted maybe?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Always 1?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The normal ARM11 bootrom checks cpuid and hangs if cpuid &amp;gt;= 2. This is a problem when booting the 2 additional New3DS ARM11 MPCores. NewKernel11 solves this by using a hardware feature to overlay the bootrom with a configurable branch to a kernel function. This overlay feature was added with the New3DS.&lt;br /&gt;
&lt;br /&gt;
Bit1 in register above enables a bootrom data-override for physical addresses 0xFFFF0000-0xFFFF1000 and 0x10000-0x11000. All _data reads_ made to those regions now read the 32-bit value provided in [[#PDN_BOOTROM_OVERLAY_VAL|PDN_BOOTROM_OVERLAY_VAL]].&lt;br /&gt;
&lt;br /&gt;
Bit0 enables a bootrom instruction-overlay which means that _instruction reads_ made to the bootrom region are overridden. We have not been able to dump what instructions are actually placed at bootrom by this switch (because reading the area only yields data-reads). Jumping randomly into the 0xFFFF0000-0xFFFF1000 region works fine and jumps to the value provided by the data overlay [[#PDN_BOOTROM_OVERLAY_VAL|PDN_BOOTROM_OVERLAY_VAL]]. Thus we may predict that the entire bootrom region is filled by:&lt;br /&gt;
 ldr pc, [pc]&lt;br /&gt;
&lt;br /&gt;
Or equivalent. However, jumping to some high addresses such as 0xFFFF0FF0+ will crash the core. This may be explained by prefetching in the ARM pipeline, and might help us identify what instructions are placed by the instruction-overlay.&lt;br /&gt;
&lt;br /&gt;
==0x10140140==&lt;br /&gt;
Seems to control what memory GPU can access for DMA, this needs verified.&lt;br /&gt;
&lt;br /&gt;
[[SVC|Initialized]] during kernel boot, and used with [[SVC]] 0x59 which was implemented with v11.3.&lt;br /&gt;
&lt;br /&gt;
==PDN_WIFI_CNT==&lt;br /&gt;
Bit0: Enable wifi.&lt;br /&gt;
&lt;br /&gt;
==PDN_TWLMODE_0==&lt;br /&gt;
Observed 0x8001 when running under TWL_ and AGB_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
This address is poked from ARM7 to signal that it has booted and begun executing code. The ARM7-mode address for this register is 0x4700000.&lt;br /&gt;
&lt;br /&gt;
The very last 3DS-mode register poke the [[FIRM|TWL_FIRM]] Process9 does before it gets switched into TWL-mode, is writing 0x8000 to this register. Before writing this register, TWL Process9 waits for ARM7 to change the value of this register. The Process9 code for this runs from ITCM, since switching into TWL-mode includes remapping all ARM9 physical memory.&lt;br /&gt;
&lt;br /&gt;
Writing 0x8000 to here from the ARM9 with NATIVE_FIRM running doesn&#039;t seem to do anything, other reg-pokes likely need done first.&lt;br /&gt;
&lt;br /&gt;
==PDN_TWLMODE_1==&lt;br /&gt;
Observed 0x8000 when running under TWL_FIRM, 0 NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
==PDN_TWLMODE_2==&lt;br /&gt;
Bitfield.&lt;br /&gt;
&lt;br /&gt;
==PDN_TWLMODE_HID==&lt;br /&gt;
The value of this register is copied to [[HID_Registers|HID_?]] under certain conditions.&lt;br /&gt;
&lt;br /&gt;
==PDN_WIFI?==&lt;br /&gt;
Bit4=unknown enabled by NWM on launch. Potentially powers on wifi card.&lt;br /&gt;
&lt;br /&gt;
==PDN_GPU_CNT==&lt;br /&gt;
This one seems to control the LCD/GPU/Backlight.&lt;br /&gt;
&lt;br /&gt;
Bit0: Enable GPU registers at 0x10400000+.&lt;br /&gt;
Bit16: Turn on LCD backlight.&lt;br /&gt;
&lt;br /&gt;
==PDN_GPU_CNT2==&lt;br /&gt;
Bit0: Power on GPU?&lt;br /&gt;
&lt;br /&gt;
==PDN_GPU_CNT3==&lt;br /&gt;
Bit1: FCRAM access from ARM11? Clearing this bit in 3DS-mode causes the ARM11 and ARM9 to hang/crash.&lt;br /&gt;
&lt;br /&gt;
==PDN_CODEC==&lt;br /&gt;
The following is the only time the ARM11 CODEC module uses any 0x1EC41XXX registers. In one case CODEC module clears bit1 in register 0x1EC41114, in the other case CODEC module sets bit1 in registers 0x1EC41114 and 0x1EC41116.&lt;br /&gt;
&lt;br /&gt;
==PDN_CODEC_CNT==&lt;br /&gt;
This is the power register used for the [[PDN_Services|PDN]] CODEC service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off DSP, rest = always 0.&lt;br /&gt;
&lt;br /&gt;
==PDN_CAMERA_CNT==&lt;br /&gt;
This is the power register used for the [[PDN_Services|PDN]] camera service.&lt;br /&gt;
&lt;br /&gt;
bit0 = unknown, bit1 = turn on/off cameras, rest = always 0.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG_Registers&amp;diff=19508</id>
		<title>CONFIG Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG_Registers&amp;diff=19508"/>
		<updated>2017-02-07T15:54:00Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: Plutooo moved page CONFIG Registers to CONFIG9 Registers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CONFIG9 Registers]]&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=19507</id>
		<title>CONFIG9 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=19507"/>
		<updated>2017-02-07T15:54:00Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: Plutooo moved page CONFIG Registers to CONFIG9 Registers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_SYSPROT9|CFG_SYSPROT9]]&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_SYSPROT11|CFG_SYSPROT11]]&lt;br /&gt;
| 0x10000001&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_RST11|CFG_RST11]]&lt;br /&gt;
| 0x10000002&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG_DEBUGCTL&lt;br /&gt;
| 0x10000004&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000008&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9, Process9, TwlProcess9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_CARDCTL|CFG_CARDCTL]]&lt;br /&gt;
| 0x1000000C&lt;br /&gt;
| 2&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_CARDSTATUS|CFG_CARDSTATUS]]&lt;br /&gt;
| 0x10000010&lt;br /&gt;
| 1&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG_CARDCYCLES0&lt;br /&gt;
| 0x10000012&lt;br /&gt;
| 2&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG_CARDCYCLES1&lt;br /&gt;
| 0x10000014&lt;br /&gt;
| 2&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000020&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG_EXTMEMCNT9|CFG_EXTMEMCNT9]]&lt;br /&gt;
| 0x10000200&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_MPCORECFG|CFG_MPCORECFG]]&lt;br /&gt;
| 0x10000FFC&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_BOOTENV|CFG_BOOTENV]]&lt;br /&gt;
| 0x10010000&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_UNITINFO|CFG_UNITINFO]]&lt;br /&gt;
| 0x10010010&lt;br /&gt;
| 1&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_TWLUNITINFO|CFG_TWLUNITINFO]]&lt;br /&gt;
| 0x10010014&lt;br /&gt;
| 1&lt;br /&gt;
| Process9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG_SYSPROT9 == &lt;br /&gt;
CFG_SYSPROT9 is used to permanently disable certain security-sensitive ARM9 memory areas until the next hard reset.&lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Disables ARM9 [[Memory_layout|bootrom]](+0x8000) when set to 1. Cannot be cleared to 0 once set to 1.&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Disables [[OTP_Registers|OTP area]] when set to 1. Cannot be cleared to 0 once set to 1.&lt;br /&gt;
| NewKernel9Loader, Process9&lt;br /&gt;
|-&lt;br /&gt;
| 31-2&lt;br /&gt;
| Not used&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On Old 3DS, NATIVE_FIRM reads CFG_SYSPROT9 to know whether it has previously initialized the TWL console-unique keys using the OTP data.  After setting the TWL console-unique keys, NATIVE_FIRM sets CFG_SYSPROT9 bit 1 to disable the OTP area.  In subsequent FIRM launches prior to the next reset, NATIVE_FIRM will see that the OTP area is disabled, and skip this step.&lt;br /&gt;
&lt;br /&gt;
On New 3DS, the above is instead done by the [[FIRM#New_3DS_FIRM|Kernel9 loader]].  In addition to using the OTP data for initializing the TWL console-unique keys, the Kernel9 loader will generate the decryption key for NATIVE_FIRM.  The final keyslot for NATIVE_FIRM is preserved, so that at a non-reset FIRM launch, the keyslot can be reused, since the OTP would then be inaccessible.&lt;br /&gt;
&lt;br /&gt;
== CFG_SYSPROT11 == &lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Disables ARM11 [[Memory_layout|bootrom]](+0x8000) when set to 1. Cannot be cleared to 0 once set to 1.&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| 31-1&lt;br /&gt;
| Not used&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG_RST11 == &lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Presumably takes ARM11 out of reset. Cannot be set to 1 once it has been cleared.&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| 31-1&lt;br /&gt;
| Not used&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 0x10000008 ==&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 1-0&lt;br /&gt;
| ?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3-2&lt;br /&gt;
| AES related? Value 3 written after write to AES_CTL.&lt;br /&gt;
| Boot9, Process9, TwlProcess9&lt;br /&gt;
|-&lt;br /&gt;
| 31-4&lt;br /&gt;
| Reserved&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG_CARDCTL ==&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 1-0&lt;br /&gt;
| Gamecard active controller select (0=NTRCARD, 1=?, 2=CTRCARD0, 3=CTRCARD1)&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Enable gamecard eject IRQ, maybe?&lt;br /&gt;
| Process9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Depending on the gamecard controller that has been selected, one of the following gamecard registers will become active:&lt;br /&gt;
* Selecting NTRCARD will activate the register space at [[NTRCARD|0x10164000]].&lt;br /&gt;
* Selecting CTRCARD0 will activate the register space at [[CTRCARD|0x10004000]].&lt;br /&gt;
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10005000]].&lt;br /&gt;
&lt;br /&gt;
== CFG_CARDSTATUS ==&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Cartridge-slot empty (0=inserted, 1=empty)&lt;br /&gt;
| Process9&lt;br /&gt;
|-&lt;br /&gt;
| 3-2&lt;br /&gt;
| ?&lt;br /&gt;
| Process9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG_EXTMEMCNT9 ==&lt;br /&gt;
This register is New3DS-only.&lt;br /&gt;
&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;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Hide extended ARM9 memory (0=hidden, 1=shown)&lt;br /&gt;
| Kernel9 (New3DS)&lt;br /&gt;
|-&lt;br /&gt;
| 31-1&lt;br /&gt;
| Reserved&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CFG_MPCORECFG ==&lt;br /&gt;
Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]].&lt;br /&gt;
&lt;br /&gt;
== CFG_BOOTENV ==&lt;br /&gt;
This register is used to determine what the previous running FIRM was. Its value is kept following an MCU reboot. Its initial value (on a cold boot) is 0. NATIVE_FIRM [[Development_Services_PXI|sets it to 1]] on shutdown/FIRM launch. [[Legacy_FIRM_PXI|LGY FIRM]] writes value 3 here when launching a TWL title, and writes value 7 when launching an AGB title.&lt;br /&gt;
&lt;br /&gt;
NATIVE_FIRM will only launch titles if this is not value 0, and will only save the [[Flash_Filesystem|AGB_FIRM savegame]] to SD if this is value 7.&lt;br /&gt;
&lt;br /&gt;
== CFG_UNITINFO ==&lt;br /&gt;
This 8-bit register is value zero for retail, non-zero for dev/debug units.&lt;br /&gt;
&lt;br /&gt;
== CFG_TWLUNITINFO ==&lt;br /&gt;
In the console-unique TWL key-init/etc function the ARM9 copies the u8 value from REG_UNITINFO to this register.&lt;br /&gt;
&lt;br /&gt;
This is also used by TWL_FIRM Process9.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=IO_Registers&amp;diff=19506</id>
		<title>IO Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=IO_Registers&amp;diff=19506"/>
		<updated>2017-02-07T15:53:35Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Old3DS&lt;br /&gt;
! A9/A11&lt;br /&gt;
! Category&lt;br /&gt;
! Physaddr&lt;br /&gt;
! Used by&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[CONFIG9 Registers]]&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[IRQ Registers]]&lt;br /&gt;
| 0x10001000&lt;br /&gt;
| Boot9, Process9, Kernel9&lt;br /&gt;
| ARM9 Interrupt Masking&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[NDMA Registers]]&lt;br /&gt;
| 0x10002000&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
| DMA Engine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[TIMER Registers]]&lt;br /&gt;
| 0x10003000&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[CTRCARD Registers]]&lt;br /&gt;
| 0x10004000 / 0x10005000&lt;br /&gt;
| Process9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[EMMC Registers]]&lt;br /&gt;
| 0x10006000 / 0x10007000&lt;br /&gt;
| Boot9, Process9, NewKernel9Loader&lt;br /&gt;
| 0x10007000 is normally not enabled on retail, all-zeros when read.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[PXI Registers]]&lt;br /&gt;
| 0x10008000&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[AES Registers]]&lt;br /&gt;
| 0x10009000&lt;br /&gt;
| Boot9, Process9, NewKernel9Loader&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[SHA Registers]]&lt;br /&gt;
| 0x1000A000&lt;br /&gt;
| Boot9, Process9, NewKernel9Loader&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[RSA Registers]]&lt;br /&gt;
| 0x1000B000&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[Corelink DMA Engines|XDMA Registers]]&lt;br /&gt;
| 0x1000C000&lt;br /&gt;
| Boot9, Kernel9&lt;br /&gt;
| [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330] (single-channel).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[SPICARD Registers]]&lt;br /&gt;
| 0x1000D800&lt;br /&gt;
| Process9&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[CONFIG Registers]]&lt;br /&gt;
| 0x10010000&lt;br /&gt;
| Process9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| PRNG Registers&lt;br /&gt;
| 0x10011000&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
| Used as entropy-source for seeding random number generators.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[OTP Registers]]&lt;br /&gt;
| 0x10012000&lt;br /&gt;
| Boot9, Kernel9, NewKernel9Loader&lt;br /&gt;
| Top secret.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A9&lt;br /&gt;
| [[ARM7|ARM7 Registers]]&lt;br /&gt;
| 0x10018000&lt;br /&gt;
| TwlProcess9&lt;br /&gt;
| Used to setup the ARM7 core for AGB/TWL&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| Debug WIFI SDIO Registers?&lt;br /&gt;
| 0x10100000&lt;br /&gt;
| &lt;br /&gt;
| An SDIO controller is mapped here, NWM references this controller but doesn&#039;t have access to it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[HASH Registers]]&lt;br /&gt;
| 0x10101000&lt;br /&gt;
| [[Filesystem services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[Y2R Registers]]&lt;br /&gt;
| 0x10102000&lt;br /&gt;
| [[Camera Services]]&lt;br /&gt;
| y2r&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[CSND Registers]] / [[DSP Registers]]&lt;br /&gt;
| 0x10103000&lt;br /&gt;
| TwlBg, [[Codec Services]], [[CSND Services]], [[DSP Services]]&lt;br /&gt;
| Sound hardware. For DSP regs, see the &amp;quot;DSi XpertTeak&amp;quot; section in [http://problemkaputt.de/gba.htm no$gba] help.&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| LGYFB0&lt;br /&gt;
| 0x10110000&lt;br /&gt;
| TwlBg&lt;br /&gt;
| IO registers used to access legacy output framebuffer, as well as configure the upscaling filter.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| LGYFB1&lt;br /&gt;
| 0x10111000&lt;br /&gt;
| TwlBg&lt;br /&gt;
| IO registers used to access legacy output framebuffer, as well as configure the upscaling filter.&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[Camera Registers]] &lt;br /&gt;
| 0x10120000&lt;br /&gt;
| [[Camera Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[Camera Registers]]&lt;br /&gt;
| 0x10121000&lt;br /&gt;
| [[Camera Services]]&lt;br /&gt;
| Mirror of 0x10120000?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[WIFI Registers]]&lt;br /&gt;
| 0x10122000&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
| WIFI SDIO bus registers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10123000&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
| WIFI?&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MVD Registers]]&lt;br /&gt;
| 0x10130000&lt;br /&gt;
| [[MVD Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MVD Registers]]&lt;br /&gt;
| 0x10131000&lt;br /&gt;
| [[MVD Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MVD Registers]]&lt;br /&gt;
| 0x10132000&lt;br /&gt;
| [[MVD Services]]&lt;br /&gt;
| &lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[CONFIG11 Registers]]&lt;br /&gt;
| 0x10140000&lt;br /&gt;
| Process9, Boot11, Kernel11, TwlBg, [[DSP Services]], [[NWM Services]], [[SPI Services]]&lt;br /&gt;
| Power management. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[CONFIG11 Registers]]&lt;br /&gt;
| 0x10141000&lt;br /&gt;
| Process9, Boot11, Kernel11, TwlBg, [[Codec Services]], [[NWM Services]], [[SPI Services]], [[PDN Services]]&lt;br /&gt;
| Power management&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[SPI Registers]]&lt;br /&gt;
| 0x10142000&lt;br /&gt;
| TwlBg, [[SPI Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[SPI Registers]]&lt;br /&gt;
| 0x10143000&lt;br /&gt;
| TwlBg, dmnt Module&lt;br /&gt;
| Debugger related?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[I2C Registers]]&lt;br /&gt;
| 0x10144000&lt;br /&gt;
| Boot11, Kernel11, TwlBg, [[I2C Services]]&lt;br /&gt;
| 3DS I2C interface (MCU + Cameras + LCD)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[CODEC Registers]]&lt;br /&gt;
| 0x10145000&lt;br /&gt;
| TwlBg, [[Codec Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[HID Registers]]&lt;br /&gt;
| 0x10146000&lt;br /&gt;
| Boot9, Boot11, Kernel11, TwlBg, [[HID Services]], dlp Services&lt;br /&gt;
| See [[PAD]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[GPIO Registers]]&lt;br /&gt;
| 0x10147000&lt;br /&gt;
| Boot11, TwlBg, [[GPIO Services]], [[DSP Services]](v0)&lt;br /&gt;
| &lt;br /&gt;
|- &lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[I2C Registers]]&lt;br /&gt;
| 0x10148000&lt;br /&gt;
| TwlBg, [[I2C Services]]&lt;br /&gt;
| 3DS I2C interface (Gyro + IR)&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[SPI Registers]]&lt;br /&gt;
| 0x10160000&lt;br /&gt;
| Boot9, TwlBg, [[SPI Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[I2C Registers]]&lt;br /&gt;
| 0x10161000&lt;br /&gt;
| Boot11, TwlBg, [[I2C Services]]&lt;br /&gt;
| TWL I2C interface (MCU + Cameras)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MIC Registers]]&lt;br /&gt;
| 0x10162000&lt;br /&gt;
| [[MIC Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[PXI Registers]]&lt;br /&gt;
| 0x10163000&lt;br /&gt;
| Boot11, Kernel11, TwlBg, [[PXI Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[NTRCARD Registers]]&lt;br /&gt;
| 0x10164000&lt;br /&gt;
| Boot9, Process9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MP Registers]]&lt;br /&gt;
| 0x10165000&lt;br /&gt;
| [[MP Services]]&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
|  [[MP Registers]]&lt;br /&gt;
| 0x10170000&lt;br /&gt;
| [[MP Services]]&lt;br /&gt;
| NTR WIFI Registers, see [http://problemkaputt.de/gbatek.htm#dswirelesscommunications GBATek].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
|  [[MP Registers]]&lt;br /&gt;
| 0x10171000&lt;br /&gt;
| [[MP Services]]&lt;br /&gt;
| NTR WIFI Registers (mirror)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
|?&lt;br /&gt;
| 0x10172000&lt;br /&gt;
|?&lt;br /&gt;
| NTR WIFI Unused?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
|?&lt;br /&gt;
| 0x10173000&lt;br /&gt;
|?&lt;br /&gt;
| NTR WIFI Unused?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MP Registers]]&lt;br /&gt;
| 0x10174000&lt;br /&gt;
| [[MP Services]]&lt;br /&gt;
| NTR WIFI RAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MP Registers]]&lt;br /&gt;
| 0x10175000&lt;br /&gt;
|?&lt;br /&gt;
| NTR WIFI RAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
|  [[MP Registers]]&lt;br /&gt;
| 0x10176000&lt;br /&gt;
|?&lt;br /&gt;
| NTR WIFI Registers (mirror)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
|  [[MP Registers]]&lt;br /&gt;
| 0x10177000&lt;br /&gt;
|?&lt;br /&gt;
| NTR WIFI Registers (mirror)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11/A9&lt;br /&gt;
| [[MP Registers]]&lt;br /&gt;
| 0x10178000 - 0x10180000&lt;br /&gt;
| [[MP Services]]&lt;br /&gt;
| NTR WIFI WS1 Region&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| [[Corelink DMA Engines|CDMA]]&lt;br /&gt;
| 0x10200000&lt;br /&gt;
| Boot11, Kernel11&lt;br /&gt;
| [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330]. Only used by bootrom on New3DS.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10201000&lt;br /&gt;
| TwlBg&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| [[LCD Registers]]&lt;br /&gt;
| 0x10202000&lt;br /&gt;
| TwlBg, Kernel11, [[GSP Services]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| [[DSP Registers]]&lt;br /&gt;
| 0x10203000&lt;br /&gt;
| [[DSP Services]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10204000&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
|  style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| A11&lt;br /&gt;
| [[Corelink DMA Engines|CDMA]]&lt;br /&gt;
| 0x10206000&lt;br /&gt;
| NewKernel11&lt;br /&gt;
| CDMA was moved (mirrored?) here on New 3DS. [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| A11&lt;br /&gt;
| [[MVD Registers]]&lt;br /&gt;
| 0x10207000&lt;br /&gt;
| [[MVD Services]]&lt;br /&gt;
| New 3DS only?&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| AXI&lt;br /&gt;
| 0x1020F000&lt;br /&gt;
| TwlBg, [[GSP Services]]&lt;br /&gt;
| [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0422a/CHDGHIID.html CoreLink™ NIC-301 r1p0].&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| DMA region&lt;br /&gt;
| 0x10300000-0x10400000&lt;br /&gt;
|&lt;br /&gt;
| CDMA wants these addresses. Each page in this region corresponds to the same page in the 0x10100000-0x10200000 region. It is unknown if this is just a separate bus and/or if there are any differences in the registers.&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| A11&lt;br /&gt;
| [[GPU/External_Registers|GPU Registers]]&lt;br /&gt;
| 0x10400000&lt;br /&gt;
| Boot11, Kernel11, [[GSP Services]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
IO registers starting at physical address 0x10200000 are not accessible from the ARM9 (which includes all LCD/GPU registers). It seems IO registers below physical address 0x10100000 are not accessible from the ARM11 bus.&lt;br /&gt;
&lt;br /&gt;
ARM11 kernel virtual address mappings for these registers varies for different builds. For ARM11 user mode applications you have:&lt;br /&gt;
 physaddr = virtaddr - 0x1EC00000 + 0x10100000&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=SPI_Registers&amp;diff=19449</id>
		<title>SPI Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=SPI_Registers&amp;diff=19449"/>
		<updated>2017-01-29T09:57:22Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* SPI_CNT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_CNT|SPI_CNT]]0&lt;br /&gt;
| 0x10142000&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| SPI_DATA0&lt;br /&gt;
| 0x10142002&lt;br /&gt;
| 1 &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_CNT|SPI_NEW_CNT]]0&lt;br /&gt;
| 0x10142800&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_DONE|SPI_NEW_DONE]]0&lt;br /&gt;
| 0x10142804&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_BLKLEN|SPI_NEW_BLKLEN]]0&lt;br /&gt;
| 0x10142808&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_FIFO|SPI_NEW_FIFO]]0&lt;br /&gt;
| 0x1014280C&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_STATUS|SPI_NEW_STATUS]]0&lt;br /&gt;
| 0x10142810&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_CNT|SPI_CNT]]1&lt;br /&gt;
| 0x10143000&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| SPI_DATA1&lt;br /&gt;
| 0x10143002&lt;br /&gt;
| 1 &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_CNT|SPI_NEW_CNT]]1&lt;br /&gt;
| 0x10143800&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_DONE|SPI_NEW_DONE]]1&lt;br /&gt;
| 0x10143804&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_BLKLEN|SPI_NEW_BLKLEN]]1&lt;br /&gt;
| 0x10143808&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_FIFO|SPI_NEW_FIFO]]1&lt;br /&gt;
| 0x1014380C&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_STATUS|SPI_NEW_STATUS]]1&lt;br /&gt;
| 0x10143810&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_CNT|SPI_CNT]]2&lt;br /&gt;
| 0x10160000&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| SPI_DATA2&lt;br /&gt;
| 0x10160002&lt;br /&gt;
| 1 &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_CNT|SPI_NEW_CNT]]2&lt;br /&gt;
| 0x10160800&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_DONE|SPI_NEW_DONE]]2&lt;br /&gt;
| 0x10160804&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_BLKLEN|SPI_NEW_BLKLEN]]2&lt;br /&gt;
| 0x10160808&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_FIFO|SPI_NEW_FIFO]]2&lt;br /&gt;
| 0x1016080C&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#SPI_NEW_STATUS|SPI_NEW_STATUS]]2&lt;br /&gt;
| 0x10160810&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SPI_CNT ==&lt;br /&gt;
This is the old NDS/DSi SPI interface.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Name&lt;br /&gt;
|-&lt;br /&gt;
| 0-1&lt;br /&gt;
| Baudrate (0=4MHz, 1=2MHz, 2=1MHz, 3=512KHz)&lt;br /&gt;
|-&lt;br /&gt;
| 2-6&lt;br /&gt;
| This was added with 3DS.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Busy Flag           (0=Ready, 1=Busy) (presumably Read-only)&lt;br /&gt;
|- &lt;br /&gt;
| 8-9&lt;br /&gt;
| Device Select       (0=Powerman., 1=Firmware, 2=Touchscreen)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Transfer Size       (0=8bit/Normal, 1=16bit/Bugged)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Chipselect Hold     (0=Deselect after transfer, 1=Keep selected)&lt;br /&gt;
|-&lt;br /&gt;
| 12-13&lt;br /&gt;
| Not used            (Zero)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Interrupt Request   (0=Disable, 1=Enable)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| SPI Bus Enable      (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SPI_NEW_CNT ==&lt;br /&gt;
This is an alternative faster interface introduced with the 3DS.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Name&lt;br /&gt;
|-&lt;br /&gt;
| 0-5&lt;br /&gt;
| Baudrate?&lt;br /&gt;
|-&lt;br /&gt;
| 6-7&lt;br /&gt;
| Device Select&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Transfer Direction? (0=Incoming, 1=Outgoing)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Busy/enable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Device id&lt;br /&gt;
!  Device select bits&lt;br /&gt;
|-&lt;br /&gt;
| 0, 3, &amp;gt;=6&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1, 4&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 2, 5&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Device id&lt;br /&gt;
!  Used baudrate&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SPI_NEW_DONE ==&lt;br /&gt;
When the transfer is finished, a 0 has to be written to this register.&lt;br /&gt;
&lt;br /&gt;
==SPI_NEW_BLKLEN==&lt;br /&gt;
The number of bytes to be sent/read is written to this register.&lt;br /&gt;
&lt;br /&gt;
==SPI_NEW_FIFO==&lt;br /&gt;
32-bit FIFO for reading/writing the SPI payload.&lt;br /&gt;
&lt;br /&gt;
==SPI_NEW_STATUS==&lt;br /&gt;
Bit0: FIFO busy.&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19447</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19447"/>
		<updated>2017-01-28T23:29:13Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| || ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || 3v3 || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || || G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | ? || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSy || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || style=&amp;quot;background: #476b6b&amp;quot; | 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| 3v3 || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || JACK_L || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19446</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19446"/>
		<updated>2017-01-28T23:22:32Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| || ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || 3v3 || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || || G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | ? || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSy || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || style=&amp;quot;background: #476b6b&amp;quot; | 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| 3v3 || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || JACK_L || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19445</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19445"/>
		<updated>2017-01-28T23:13:07Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| || ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | || || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || 3v3 || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || style=&amp;quot;background: #476b6b&amp;quot; | 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| 3v3 || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || JACK_L || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19444</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19444"/>
		<updated>2017-01-28T22:03:16Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: if anyone is bored please color the grounds&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || 3v3 || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || style=&amp;quot;background: #476b6b&amp;quot; | 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| 3v3 || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || JACK_L || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19441</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19441"/>
		<updated>2017-01-28T17:56:23Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || 3v3 || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| 3v3 || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || JACK_L || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19438</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19438"/>
		<updated>2017-01-28T13:57:11Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* CODEC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || 3v3 || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| 3v3 || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || JACK_L || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19437</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19437"/>
		<updated>2017-01-28T13:46:31Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
|   || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| MIC || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| JACK_R || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| JACK_DET || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || JACK_L || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19436</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19436"/>
		<updated>2017-01-28T13:30:08Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 4? || style=&amp;quot;background: #476b6b&amp;quot; | 5? ||    ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | 1? || style=&amp;quot;background: #476b6b&amp;quot; | 2? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A  || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | 0? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | + || style=&amp;quot;background: #d9ffb3&amp;quot; | + || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 4? || || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #476b6b&amp;quot; | 3? || style=&amp;quot;background: #476b6b&amp;quot; | 5? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || style=&amp;quot;background: #476b6b&amp;quot; | 2? || style=&amp;quot;background: #476b6b&amp;quot; | 0? || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || 1? || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19435</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19435"/>
		<updated>2017-01-28T13:14:53Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A      || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || || || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || || || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| || G || G || || G || || || || || || G&lt;br /&gt;
|-&lt;br /&gt;
| || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19434</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19434"/>
		<updated>2017-01-28T13:07:58Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SDA || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A      || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | SCL || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || || || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || || || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| || G || G || || G || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19433</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19433"/>
		<updated>2017-01-28T13:05:50Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | 0? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 1? || style=&amp;quot;background: #cc9900&amp;quot; | 2? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | 3? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | ? || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A      || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #476b6b&amp;quot; | ? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC0 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #476b6b&amp;quot; | CODEC1 (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || || || || style=&amp;quot;background: #cc9900&amp;quot; | 3? || style=&amp;quot;background: #cc9900&amp;quot; | 0? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || || style=&amp;quot;background: #cc9900&amp;quot; | 1? || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || || || G || || style=&amp;quot;background: #cc9900&amp;quot; | 2? || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| || G || G || || G || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19432</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19432"/>
		<updated>2017-01-28T12:52:18Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A      || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTHM || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CODEC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:36%;&amp;quot;&lt;br /&gt;
| || || || || || || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || || || || || || G ||&lt;br /&gt;
|-&lt;br /&gt;
| G || || || G || || || || || || || SPEAKER1&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| TOUCH || TOUCH || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| CPAD || CPAD || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || G || G || G || G || G || G || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || G || G || G || G || G || G || || SPEAKER2&lt;br /&gt;
|-&lt;br /&gt;
| || G || G || || G || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || G || G || G || G || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || G || || || || || || G || G ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19384</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19384"/>
		<updated>2017-01-22T22:01:44Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* UC CTR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A      || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTEMP || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || PWRBTN || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19383</id>
		<title>Pinouts</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Pinouts&amp;diff=19383"/>
		<updated>2017-01-22T21:53:00Z</updated>

		<summary type="html">&lt;p&gt;Plutooo: /* UC CTR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CTR CPU B ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | CS1 || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D5  || style=&amp;quot;background: #a060a0&amp;quot; | D2  ||     || style=&amp;quot;background: #a060a0&amp;quot; | RST || style=&amp;quot;background: #a060a0&amp;quot; | CLK || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #ff0000&amp;quot; | X  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     ||     ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     || style=&amp;quot;background: #666633&amp;quot; | IRIRQ || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #336600&amp;quot; | CSx || style=&amp;quot;background: #336600&amp;quot; | CSy || style=&amp;quot;background: #336600&amp;quot; | ? || style=&amp;quot;background: #a060a0&amp;quot; | D6  || style=&amp;quot;background: #a060a0&amp;quot; | D3  || style=&amp;quot;background: #a060a0&amp;quot; | D0  || style=&amp;quot;background: #a060a0&amp;quot; | IRQ || style=&amp;quot;background: #a060a0&amp;quot; | CS1 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||     ||     || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CLK || style=&amp;quot;background: #ffff00&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||  +  ||     || style=&amp;quot;background: #a060a0&amp;quot; | D7  || style=&amp;quot;background: #a060a0&amp;quot; | D4  || style=&amp;quot;background: #a060a0&amp;quot; | D1  || style=&amp;quot;background: #a060a0&amp;quot; | DET || style=&amp;quot;background: #a060a0&amp;quot; | CS2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #a52a2a&amp;quot; | ? || style=&amp;quot;background: #666633&amp;quot; | IRTX || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | D1  || style=&amp;quot;background: #ffff00&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | CMD || style=&amp;quot;background: #ffff00&amp;quot; | IRQ ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ffff00&amp;quot; | WP  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | CLK || style=&amp;quot;background: #00aaee&amp;quot; | D0  ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | D1  || style=&amp;quot;background: #00aaee&amp;quot; | D2  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #00aaee&amp;quot; | D3  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #00aaee&amp;quot; | CMD ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #20b2aa&amp;quot; | ? ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #20b2aa&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SCL ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | SDA  ||     ||style=&amp;quot;background: #ffffff&amp;quot; | ||     || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 3v3 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
|     || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v8 || style=&amp;quot;background: #d9ffb3&amp;quot; | 1v2 || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  B  || style=&amp;quot;background: #ff69b4&amp;quot; | PADR || style=&amp;quot;background: #ff69b4&amp;quot; | PADD || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | ?  || style=&amp;quot;background: #cc6600&amp;quot; | ?  ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | ||style=&amp;quot;background: #ffffff&amp;quot; | || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #73e600&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; |  A      || style=&amp;quot;background: #ff69b4&amp;quot; | STRT || style=&amp;quot;background: #ff69b4&amp;quot; | PADU || style=&amp;quot;background: #ff69b4&amp;quot; |  L  || style=&amp;quot;background: #ff69b4&amp;quot; |  Y  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; |  G  || style=&amp;quot;background: #b19cd9&amp;quot; | ? || style=&amp;quot;background: #b19cd9&amp;quot; | ? ||     ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #b19cd9&amp;quot; | ?  || style=&amp;quot;background: #8efab4&amp;quot; | ?  || style=&amp;quot;background: #cc9900&amp;quot; | ? ||     ||     ||     ||     ||     ||     || style=&amp;quot;background: #ff69b4&amp;quot; | SLCT || style=&amp;quot;background: #ff69b4&amp;quot; | PADL ||  style=&amp;quot;background: #ff69b4&amp;quot; |  R  || style=&amp;quot;background: #ff69b4&amp;quot; |  X  || style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  || style=&amp;quot;background: #ff2a7f&amp;quot; | ?  ||  style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
legend:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;table-layout:fixed;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #ff0000&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a060a0&amp;quot; | Gamecard&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ffff00&amp;quot; | SDCARD SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #00aaee&amp;quot; | NAND SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #20b2aa&amp;quot; | WIFI SDIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #336600&amp;quot; | SPI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #73e600&amp;quot; | I2C-1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #8efab4&amp;quot; | I2C-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #33ffff&amp;quot; | I2C-3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff69b4&amp;quot; | Pad&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff2a7f&amp;quot; | FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #b19cd9&amp;quot; | Camera&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #a52a2a&amp;quot; | WIFI&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #666633&amp;quot; | GPIO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ff8000&amp;quot; | LCD0 (small)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc6600&amp;quot; | LCD1 (big)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #cc9900&amp;quot; | CODEC (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | MCU (unknown)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #d9ffb3&amp;quot; | POWER&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Orientation: Triangle bottom right on the PCB.&lt;br /&gt;
&lt;br /&gt;
== UC CTR ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-family:Monospace;text-align:center;width:100%;table-layout:fixed;width:26%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: #4d4d33&amp;quot; | ? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || style=&amp;quot;background: #d9ffb3&amp;quot; | +? || CHRGLED || style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || style=&amp;quot;background: #bbbbbb&amp;quot; | G || BATTTEMP || HOMEBTN ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SDA&lt;br /&gt;
|-&lt;br /&gt;
| TP75 || TP74 || TP76 || || || || || style=&amp;quot;background: #8efab4&amp;quot; | SCL &lt;br /&gt;
|-&lt;br /&gt;
| || || TP77 || PWRLED1 || || || PWRLED0 ||&lt;br /&gt;
|-&lt;br /&gt;
| || style=&amp;quot;background: #bbbbbb&amp;quot; | G || style=&amp;quot;background: #d9ffb3&amp;quot; | + || TP78 || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #bbbbbb&amp;quot; | G || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| TP79 || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #73e600&amp;quot; | ? || style=&amp;quot;background: #4d4d33&amp;quot; | ? || || || || style=&amp;quot;background: #d9ffb3&amp;quot; | +&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plutooo</name></author>
	</entry>
</feed>