<?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=Slashmolder</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=Slashmolder"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Slashmolder"/>
	<updated>2026-06-02T13:04:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:ExportDSiWare&amp;diff=14885</id>
		<title>AMPXI:ExportDSiWare</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:ExportDSiWare&amp;diff=14885"/>
		<updated>2015-12-06T09:22:04Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x004D0144]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| TWL TitleID lower word&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| TWL TitleID upper word&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Input path buffer size&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Size of working buffer, normally this is 0x20000.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| u8 DSiWare export type.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| (PathSize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x4&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Input path buffer ptr&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| (WorkBufSize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x14&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Ptr for the working buffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This is used for [[DSiWare_Exports|exporting]] DSiWare. The UTF-16 input path is normally in the format &amp;quot;[[SD_Filesystem|sdmc]]:/Nintendo 3DS/&amp;lt;ID0&amp;gt;/&amp;lt;ID1&amp;gt;/Nintendo DSiWare/&amp;lt;TitleID-Low.bin&amp;gt;&amp;quot;, however this can be arbitrary.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=3DS_System_Flaws&amp;diff=12006</id>
		<title>3DS System Flaws</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=3DS_System_Flaws&amp;diff=12006"/>
		<updated>2015-03-21T22:11:39Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exploits are used to execute unofficial code (homebrew) on the Nintendo 3DS. This page is a list of publicly known system flaws, for userland applications/applets flaws see [[3DS_Userland_Flaws|here]].&lt;br /&gt;
&lt;br /&gt;
==Stale / Rejected Efforts==&lt;br /&gt;
* Neimod has been working on a RAM dumping setup for a little while now. He&#039;s de-soldered the 3DS&#039;s RAM chip and hooked it and the RAM pinouts on the 3DS&#039; PCB up to a custom RAM dumping setup. A while ago he published photos showing his setup to be working quite well, with the 3DS successfully booting up. However, his flickr stream is now private along with most of his work.&lt;br /&gt;
&lt;br /&gt;
* Someone (who will remain unnamed) has released CFW and CIA installers, all of which is copied from the work of others, or copyrighted material.&lt;br /&gt;
&lt;br /&gt;
==Tips and info==&lt;br /&gt;
The 3DS uses the XN feature of the ARM11 processor. There&#039;s no official way from applications to enable executable permission for memory containing arbitrary unsigned code(there&#039;s a [[SVC]] for this, but only [[RO_Services|RO-module]] has access to it). An usable userland exploit would still be useful: you could only do return-oriented-programming with it initially. From ROP one could then exploit system flaw(s), see below.&lt;br /&gt;
&lt;br /&gt;
SD card [[extdata]] and SD savegames can be attacked, for consoles where the console-unique [[Nand/private/movable.sed|movable.sed]] was dumped(accessing SD data is far easier by running code on the target 3DS however).&lt;br /&gt;
&lt;br /&gt;
Note that the publicly-available &amp;lt;v5.0 total-control exploits are [[FIRM|Process9]] exploits, not &amp;quot;kernel exploits&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==System flaws==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| Missing AES key clearing&lt;br /&gt;
| The hardware AES engine does not clear keys when doing a hard reset/reboot.&lt;br /&gt;
This applies for New3DS too.&lt;br /&gt;
| August 2014&lt;br /&gt;
| Mathieulh/Others&lt;br /&gt;
|-&lt;br /&gt;
| DSi / 3DS-TWL key-generator&lt;br /&gt;
| After using the key generator to generate the normal-key, you could overwrite parts of the normal-key with your own data and then recover the key-generator output by comparing the new crypto output with the original crypto output. From the normal-key outputs, you could deduce the TWL key-generator function.&lt;br /&gt;
This applies to the keyX/keyY too.&lt;br /&gt;
&lt;br /&gt;
This attack does not work for the 3DS key-generator because keyslots 0-3 are only for TWL keys.&lt;br /&gt;
| 2011&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[TWL_FIRM]] ===&lt;br /&gt;
==== Process9 ====&lt;br /&gt;
&lt;br /&gt;
=== [[FIRM]] Process9 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in [[FIRM]] system version&lt;br /&gt;
!  Last [[FIRM]] system version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| RSA signature padding checks&lt;br /&gt;
| The TWL_FIRM RSA sig padding check code used for all TWL RSA sig-checks has issues, see [[FIRM|here]].&lt;br /&gt;
The main 3DS RSA padding check code(non-certificate) uses the function used with the above to extract PKCS padding + the actual hash from the message. This is not a problem here however.&lt;br /&gt;
| &lt;br /&gt;
| None&lt;br /&gt;
| [[9.5.0-22|9.5.0-X]]&lt;br /&gt;
| March 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncleared New3DS keyslot 0x11&lt;br /&gt;
| Originally the New3DS [[FIRM]] arm9bin loader only cleared keyslot 0x11 when it gets executed at firmlaunch. This was fixed with [[9.5.0-22|9.5.0-X]] by completely clearing keyslot 0x11 immediately after the loader finishes using keyslot 0x11.&lt;br /&gt;
This means that any ARM9 code that can execute before the loader clears the keyslot at firmlaunch(including firmlaunch-hax) can get access to the uncleared keyslot 0x11, which then allows one to generate all &amp;lt;=v9.5 New3DS keyXs which are generated by keyslot 0x11.&lt;br /&gt;
&lt;br /&gt;
Therefore, to completely fix this the loader would have to generate more keys using different keyslot 0x11 keydata.&lt;br /&gt;
| New3DS keyXs generation&lt;br /&gt;
| Mostly fixed with [[9.5.0-22|9.5.0-X]], see description.&lt;br /&gt;
| &lt;br /&gt;
| February 3, 2015 (one day after [[9.5.0-22|9.5.0-X]] release)&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| firmlaunch-hax: FIRM header ToCToU&lt;br /&gt;
| This can&#039;t be exploited from ARM11 userland.&lt;br /&gt;
During [[FIRM]] launch, the only FIRM header the ARM9 uses at all is stored in FCRAM, this is 0x200-bytes(the actual used FIRM RSA signature is read to the Process9 stack however). The ARM9 doesn&#039;t expect &amp;quot;anything&amp;quot; besides the ARM9 to access this data.&lt;br /&gt;
With [[9.5.0-22]] the address of this FIRM header was changed from a FCRAM address, to ARM9-only address 0x01fffc00.&lt;br /&gt;
| ARM9 code execution&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| &lt;br /&gt;
| 2012, 3 days after [[User:Yellows8|Yellows8]] started Process9 code RE.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Uninitialized data output for PXI command replies&lt;br /&gt;
| Various (stubbed?) PXI commands(including some [[Filesystem_services_PXI|here]]) just write uninitialized data (like from ARM registers) to the command reply.&lt;br /&gt;
| &lt;br /&gt;
| None&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| ?&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Filesystem_services_PXI|FSPXI]] OpenArchive SD permissions&lt;br /&gt;
| Process9 does not use the exheader ARM9 access-mount permission flag for SD at all.&lt;br /&gt;
This would mean ARM11-kernelmode code / fs-module itself could directly use FSPXI to access SD card without ARM9 checking for SD access, but this is rather useless since a process is usually running with SD access(Home Menu for example) anyway.&lt;br /&gt;
| &lt;br /&gt;
| None&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[AMPXI:ExportDSiWare]] export path&lt;br /&gt;
| Process9 allocates memory on Process9 heap for the export path then verifies that the actual allocated size matches the input size. Then Process9 copies the input path from FCRAM to this buffer, and uses it with the Process9 FS openfile code, which use paths in the form of &amp;quot;&amp;lt;mountpoint&amp;gt;:/&amp;lt;path&amp;gt;&amp;quot;.&lt;br /&gt;
Process9 does not check the contents of this path at all before passing it to the FS code, besides writing a NUL-terminator to the end of the buffer.&lt;br /&gt;
| Exporting of DSiWare to arbitrary Process9 file-paths, such as &amp;quot;nand:/&amp;lt;path&amp;gt;&amp;quot; etc. This isn&#039;t really useful since the data which gets written can&#039;t be controlled.&lt;br /&gt;
| None&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| April 2013&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[DSiWare_Exports]] [[CTCert]] verification&lt;br /&gt;
| Just like DSi originally did, 3DS verifies the APCert for DSiWare on SD with the CTCert also in the DSiWare .bin. On DSi this was fixed with with system-version 1.4.2 by verifying with the actual console-unique cert instead(stored in NAND), while on 3DS it&#039;s still not(?) fixed.&lt;br /&gt;
On 3DS however this is rather useless, due to the entire DSiWare .bin being encrypted with the console-unique movable.sed keyY.&lt;br /&gt;
| When the movable.sed keyY for the target 3DS is known and the target 3DS CTCert private-key is unknown, importing of modified DSiWare SD .bin files.&lt;br /&gt;
| Unknown, probably none.&lt;br /&gt;
| ?&lt;br /&gt;
| April 2013&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Gamecard_Services_PXI]] unchecked REG_CTRCARDCNT transfer-size&lt;br /&gt;
| The u8 REG_CTRCARDCNT transfer-size parameter for the [[Gamecard_Services_PXI]] read/write CTRCARD commands is used as an index for an array of u16 values. Before [[5.0.0-11|5.0.0-X]] this u8 value wasn&#039;t checked, thus out-of-bounds reads could be triggered(which is rather useless in this case).&lt;br /&gt;
| Out-of-bounds read for a value which gets written to a register.&lt;br /&gt;
| [[5.0.0-11|5.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| 2013?&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Application_Manager_Services_PXI|PXIAM]] command 0x003D0108(See also [[Application_Manager_Services|this]])&lt;br /&gt;
| When handling this command, Process9 allocates a 0x2800-byte heap buffer, then copies the 4 FCRAM input buffers to this heap buffer without checking the sizes at all(only the buffers with non-zero sizes are copied). Starting with [[5.0.0-11|5.0.0-X]], the total combined size of the input data must be &amp;lt;=0x2800.&lt;br /&gt;
| ARM9 code execution&lt;br /&gt;
| [[5.0.0-11|5.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| May 2013&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Process_Services_PXI|PS RSA]] commands buffer overflows&lt;br /&gt;
| pxips9 cmd1(not accessible via ps:ps) and VerifyRsaSha256: unchecked copy to a buffer in Process9&#039;s .bss, from the input FCRAM buffer. The buffer is located before the pxi cmdhandler threads&#039; stacks. SignRsaSha256 also has a buf overflow, but this isn&#039;t exploitable.&lt;br /&gt;
The buffer for this is the buffer for the signature data. With v5.0, the signature buffer was moved to stack, with a check for the signature data size. When the signature data size is too large, Process9 uses [[SVC|svcBreak]].&lt;br /&gt;
| ARM9 code execution&lt;br /&gt;
| [[5.0.0-11|5.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM11 kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in [[FIRM]] system version&lt;br /&gt;
!  Last [[FIRM]] system version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
|  [[SVC]] table too small&lt;br /&gt;
|  The table of function pointers for SVC&#039;s only contains entries up to 0x7D, but the biggest allowed SVC for the table is 0x7F. Thus, executing SVC7E or SVC7F would make the SVC-handler read after the buffer, and interpret some ARM instructions as function pointers.&lt;br /&gt;
&lt;br /&gt;
However, this would require patching the kernel .text or modifying SVC-access-control. Even if you could get these to execute, they would still jump to memory that isn&#039;t mapped as executable.&lt;br /&gt;
| &lt;br /&gt;
|  None&lt;br /&gt;
| [[9.5.0-22|9.5.0-X]]&lt;br /&gt;
| 2012&lt;br /&gt;
| Everyone&lt;br /&gt;
|-&lt;br /&gt;
|  [[SVC|svcBackdoor (0x7B)]]&lt;br /&gt;
|  This backdoor allows executing SVC-mode code at the user-specified code-address. This is used by Process9, using this on the ARM11(with NATIVE_FIRM) requires patching the kernel .text or modifying SVC-access-control.&lt;br /&gt;
| See description&lt;br /&gt;
|  None&lt;br /&gt;
| [[9.5.0-22|9.5.0-X]]&lt;br /&gt;
|&lt;br /&gt;
| Everyone&lt;br /&gt;
|-&lt;br /&gt;
| [[Memory_layout#ARM11_Detailed_virtual_memory_map|0xEFF00000]] / 0xDFF00000 ARM11 kernel virtual-memory&lt;br /&gt;
| The ARM11 kernel-mode 0xEFF00000/0xDFF00000 virtual-memory(size 0x100000) is mapped to phys-mem 0x1FF00000(entire DSP-mem + entire AXIWRAM), with permissions RW-. This is used during ARM11 kernel startup, this never seems to be used after that, however.&lt;br /&gt;
| &lt;br /&gt;
| None&lt;br /&gt;
| [[9.5.0-22|9.5.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| memchunkhax&lt;br /&gt;
| The kernel originally did not validate the data stored in the FCRAM kernel heap memchunk-headers for free-memory at all. Exploiting this requires raw R/W access to these memchunk-headers, like physical-memory access with gspwn.&lt;br /&gt;
&lt;br /&gt;
There are &#039;&#039;multiple&#039;&#039; ways to exploit this, but the end-result for most of these is the same: overwrite code in AXIWRAM via the 0xEFF00000/0xDFF00000 kernel virtual-memory mapping.&lt;br /&gt;
&lt;br /&gt;
This was fixed in [[9.3.0-21|9.3.0-X]] by checking that the memchunk(including size, next, and prev ptrs) is located within the currently used heap memory. The kernel may also check that the next/prev ptrs are valid compared to other memchunk-headers basically. When any of these checks fail, kernelpanic() is called.&lt;br /&gt;
| When combined with other flaws: ARM11-kernelmode code execution&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| February 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| PXI [[RPC_Command_Structure|Command]] input/output buffer permissions&lt;br /&gt;
| Originally the ARM11-kernel didn&#039;t check permissions for PXI input/output buffers for commands. Starting with [[6.0.0-11|6.0.0]] PXI input/output buffers must have RW permissions, otherwise kernelpanic is triggered.&lt;br /&gt;
| &lt;br /&gt;
| [[6.0.0-11|6.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcStartInterProcessDma]]&lt;br /&gt;
| For svcStartInterProcessDma, the kernel code had the following flaws:&lt;br /&gt;
&lt;br /&gt;
* Originally the ARM11-kernel read the input DmaConfig structure directly in kernel-mode(ldr(b/h) instructions), without checking whether the DmaConfig address is readable under userland. This was fixed by copying that structure to the SVC-mode stack, using the ldrbt instruction.&lt;br /&gt;
&lt;br /&gt;
* Integer overflows for srcaddr+size and dstaddr+size are now checked(with [[6.0.0-11]]), which were not checked before.&lt;br /&gt;
&lt;br /&gt;
* The kernel now also checks whether the srcaddr/dstaddr (+size) is within userland memory (0x20000000), the kernel now (with [[6.0.0-11]]) returns an error when the address is beyond userland memory. Using an address &amp;gt;=0x20000000 would result in the kernel reading from the process L1 MMU table, beyond the memory allocated for that MMU table(for vaddr-&amp;gt;physaddr conversion). &lt;br /&gt;
| &lt;br /&gt;
| [[6.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| DmaConfig issue: unknown. The rest: 2014&lt;br /&gt;
| plutoo, [[User:Yellows8|Yellows8]] independently&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcControlMemory]] Parameter checks&lt;br /&gt;
| For svcControlMemory the parameter check had these two flaws:&lt;br /&gt;
&lt;br /&gt;
* The allowed range for addr0, addr1, size parameters depends on which MemoryOperation is being specified. The limitation for GSP heap was only checked if op=(u32)0x10003. By setting a random bit in op that has no meaning (like bit17?), op would instead be (u32)0x30003, and the range-check would be less strict and not accurate. However, the kernel doesn&#039;t actually use the input address for LINEAR memory-mapping at all besides the range-checks, so this isn&#039;t actually useful. This was fixed in the kernel by just checking for the LINEAR bit, instead of comparing the entire MemoryOperation value with 0x10003.&lt;br /&gt;
&lt;br /&gt;
* Integer overflows on (addr0+size) are now checked that previously weren&#039;t (this also applies to most other address checks elsewhere in the kernel).&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| plutoo&lt;br /&gt;
|-&lt;br /&gt;
| [[RPC_Command_Structure|Command]] request/response buffer overflow&lt;br /&gt;
| Originally the kernel did not check the word-values from the command-header. Starting with [[5.0.0-11]], the kernel will trigger a kernelpanic() when the total word-size of the entire command(including the cmd-header) is larger than 0x40-words (0x100-bytes). This allows overwriting threadlocalstorage+0x180 in the destination thread. However, since the data written there would be translate parameters (such as header-words + buffer addresses), exploiting this would likely be very difficult, if possible at all.&lt;br /&gt;
&lt;br /&gt;
If the two words at threadlocalstorage+0x180 could be overwritten with controlled data this way, one could then use a command with a buffer-header of &amp;lt;nowiki&amp;gt;((size&amp;lt;&amp;lt;14) | 2)&amp;lt;/nowiki&amp;gt; to write arbitrary memory to any RW userland memory in the destination process.&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| v4.1 FIRM -&amp;gt; v5.0 code diff&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|SVC stack allocation overflows]]&lt;br /&gt;
| &lt;br /&gt;
* Syscalls that allocate a variable-length array on stack, only checked bit31 before multiplying by 4/16 (when calculating how much memory to allocate). If a large integer was passed as input to one of these syscalls, an integer overflow would occur, and too little memory would have been allocated on stack resulting in a buffer overrun. &lt;br /&gt;
* The alignment (size+7)&amp;amp;~7 calculation before allocation was not checked for integer overflow.&lt;br /&gt;
&lt;br /&gt;
This might allow for ARM11 kernel code-execution.&lt;br /&gt;
&lt;br /&gt;
(Applies to svcSetResourceLimitValues, svcGetThreadList, svcGetProcessList, svcReplyAndReceive, svcWaitSynchronizationN.)&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| v4.1 FIRM -&amp;gt; v5.0 code diff&lt;br /&gt;
| plutoo, [[User:Yellows8|Yellows8]] complementary&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcControlMemory]] MemoryOperation MAP memory-permissions&lt;br /&gt;
| svcControlMemory with MemoryOperation=MAP allows mapping the already-mapped process virtual-mem at addr1, to addr0. The lowest address permitted for addr1 is 0x00100000. Originally the ARM11 kernel didn&#039;t check memory permissions for addr1. Therefore .text as addr1 could be mapped elsewhere as RW- memory, which allowed ARM11 userland code-execution.&lt;br /&gt;
| &lt;br /&gt;
| [[4.1.0-8]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[RPC_Command_Structure|Command]] input/output buffer permissions&lt;br /&gt;
| Originally the ARM11 kernel didn&#039;t check memory permissions for the input/output buffers for commands. Starting with [[4.0.0-7]] the ARM11 kernel will trigger a kernelpanic() if the input/output buffers don&#039;t have the required memory permissions. For example, this allowed a FSUSER file-read to .text, which therefore allowed ARM11-userland code execution.&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcReadProcessMemory/svcWriteProcessMemory memory]] permissions&lt;br /&gt;
| Originally the kernel only checked the first page(0x1000-bytes) of the src/dst buffers, for svcReadProcessMemory and svcWriteProcessMemory. There is no known retail processes which have access to these SVCs.&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| &lt;br /&gt;
| 2012?&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[FIRM]] ARM11 modules ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in [[FIRM]] system version&lt;br /&gt;
!  Last [[FIRM]] system version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| [[Services|&amp;quot;srv:pm&amp;quot;]] process registration&lt;br /&gt;
| Originally any process had access to the port &amp;quot;srv:pm&amp;quot;. The PID&#039;s used for the (un)registration commands are not checked either. This allowed any process to re-register itself with &amp;quot;srv:pm&amp;quot;, and therefore allowed the process to give itself access to any service, bypassing the exheader service-access-control list.&lt;br /&gt;
&lt;br /&gt;
This was fixed in [[7.0.0-13]]: starting with [[7.0.0-13]] &amp;quot;srv:pm&amp;quot; is now a service instead of a globally accessible port. Only processes with PID&#039;s less than 6 (in other words: fs, ldr, sm, pm, pxi modules) have access to it. With [[7.0.0-13]] there can only be one session for &amp;quot;srv:pm&amp;quot; open at a time(this is used by pm module), svcBreak will be executed if more sessions are opened by the processes which can access this.&lt;br /&gt;
&lt;br /&gt;
This flaw was needed for exploiting the &amp;lt;=v4.x Process9 PXI vulnerabilities from ARM11 userland ROP, since most applications don&#039;t have access to those service(s).&lt;br /&gt;
| Access to arbitrary services&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM11 system modules ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in system-module system-version&lt;br /&gt;
!  Last system-module system-version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| [[SPI_Services|SPI]] service out-of-bounds write&lt;br /&gt;
| cmd1 has out-of-bounds write allowing overwrite of some static variables in .data.&lt;br /&gt;
| &lt;br /&gt;
| None&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| March 2015&lt;br /&gt;
| plutoo&lt;br /&gt;
|-&lt;br /&gt;
| [[News_Services|NEWSS]] service command notificationID validation failure&lt;br /&gt;
| This module does not validate the input notificationID for &amp;lt;nowiki&amp;gt;&amp;quot;news:s&amp;quot;&amp;lt;/nowiki&amp;gt; service commands. This is an out-of-bounds array index bug. For example, [[NEWSS:SetNotificationHeader]] could be used to exploit news module: this copies the input data(size is properly checked) to: out = newsdb_savedata+0x10 + (someu32array[notificationID]*0x70).&lt;br /&gt;
| ROP under news module.&lt;br /&gt;
| None&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| December 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[HID_Services|HID]] module shared-mem&lt;br /&gt;
| HID module does not validate the index values in [[HID_Shared_Memory|sharedmem]](just changes index to 0 when index == maxval when updating), therefore large values will result in HID module writing HID data to arbitrary addresses.&lt;br /&gt;
| ROP under HID module, but this is *very* unlikely to be exploitable since the data written is HID data.&lt;br /&gt;
| None&lt;br /&gt;
| [[9.3.0-21]]&lt;br /&gt;
| 2014?&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| gspwn&lt;br /&gt;
| GSP module does not validate addresses given to the GPU. This allows a user-mode application/applet to read/write to a large part of physical FCRAM using GPU DMA. From this, you can overwrite the .text segment of the application you&#039;re running under, and gain real code-execution from a ROP-chain. Normally applets&#039; .text([[Home Menu]], [[Internet Browser]], etc) is located beyond the area accessible by the GPU, except for [[RO_Services|CROs]] used by applets([[Internet Browser]] for example).&lt;br /&gt;
| User-mode code execution.&lt;br /&gt;
| None&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| Early 2014&lt;br /&gt;
| smea, [[User:Yellows8|Yellows8]]/others before then&lt;br /&gt;
|-&lt;br /&gt;
| rohax&lt;br /&gt;
| Using gspwn, it is possible to overwrite a loaded [[CRO0]]/[[CRR0]] after its RSA-signature has been validated. Badly validated [[CRO0]] header leads to arbitrary read/write of memory in the ro-process. This gives code-execution in the ro module, who has access to [[SVC|syscalls]] 0x70-0x72, 0x7D.&lt;br /&gt;
&lt;br /&gt;
This was fixed after [[ninjhax]] release by adding checks on [[CRO0]]-based pointers before writing to them.&lt;br /&gt;
| Memory-mapping syscalls.&lt;br /&gt;
| [[9.3.0-21]]&lt;br /&gt;
| [[9.4.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| smea, plutoo joint effort&lt;br /&gt;
|-&lt;br /&gt;
| Region free&lt;br /&gt;
| Only [[Home Menu]] itself checks gamecards&#039; region when launching them. Therefore, any application launch that is done directly with [[NS]] without signaling Home Menu to launch the app, will result in region checks being bypassed.&lt;br /&gt;
This essentially means launching the gamecard with the [[NS_and_APT_Services|&amp;quot;ns:s&amp;quot;]] service. The main way to exploit this is to trigger a FIRM launch with an application specified, either with a normal FIRM launch or a hardware [[NSS:RebootSystem|reboot]].&lt;br /&gt;
| Launching gamecards from any region + bypassing Home Menu gamecard-sysupdate installation&lt;br /&gt;
| None&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| June(?) 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[NWM_Services|NWM]] service-cmd state null-ptr deref&lt;br /&gt;
| The NWMUDS service command code loads a ptr from .data, adds an offset to that, then passes that as the state address for the actual command-handler function. The value of the ptr loaded from .data is not checked, therefore this will cause crashes due to that being 0x0 when NWMUDS was not properly initialized.&lt;br /&gt;
It&#039;s unknown whether any NWM services besides NWMUDS have this issue.&lt;br /&gt;
| This is rather useless since it&#039;s only a crash caused by a state ptr based at 0x0.&lt;br /&gt;
| None&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| 2013?&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General/CTRSDK ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| [[NWM_Services|UDS]] beacon additional-data buffer overflow&lt;br /&gt;
| Originally CTRSDK did not validate the UDS additional-data size before using that size to copy the additional-data to a [[NWM_Services|networkstruct]]. This was eventually fixed.&lt;br /&gt;
This was discovered while doing code RE with an old dlp-module version. It&#039;s unknown in what specific CTRSDK version this was fixed, or even what system-version updated titles with a fixed version.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown if there&#039;s any titles using a vulnerable CTRSDK version which are also exploitable with this(dlp module can&#039;t be exploited with this).&lt;br /&gt;
&lt;br /&gt;
The maximum number of bytes that can be written beyond the end of the outbuf is 0x37-bytes, with additionaldata_size=0xFF.&lt;br /&gt;
| Perhaps ROP, very difficult if possible with anything at all&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
| September(?) 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=QTM_Services&amp;diff=11946</id>
		<title>QTM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=QTM_Services&amp;diff=11946"/>
		<updated>2015-03-17T21:20:27Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* QTM service &amp;quot;qtm:sp&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
QTM is the [[New_3DS]] system module in charge of handling head tracking. A maximum of two sessions can be opened for each QTM service.&lt;br /&gt;
&lt;br /&gt;
Head tracking is not usable when any other process is using any of the cameras, QTM returns error 0xC8A18008 for this.&lt;br /&gt;
&lt;br /&gt;
=QTM 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;
|-&lt;br /&gt;
| 0x00010080&lt;br /&gt;
| [[QTM:GetHeadtrackingInfoRaw|GetHeadtrackingInfoRaw]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[QTM:GetHeadtrackingInfo|GetHeadtrackingInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| (u8 input)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| Writes an output u8 to cmdreply[2].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The commands under this section are available for all QTM services except for &amp;quot;qtm:c&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= QTM user service &amp;quot;qtm:u&amp;quot; =&lt;br /&gt;
The commands available for this are exactly the same as the commands listed under the &amp;quot;QTM services&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
= QTM system service &amp;quot;qtm:s&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;
| 0x04010040&lt;br /&gt;
| (float input)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020000&lt;br /&gt;
| Writes float output to cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x04030000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x04040000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x04050040&lt;br /&gt;
| (u8 input)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060000&lt;br /&gt;
| Writes an u8 to cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x04070040&lt;br /&gt;
| (u8 input)&lt;br /&gt;
|-&lt;br /&gt;
| 0x040801C0&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x04090000&lt;br /&gt;
| Writes an u8 to cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x040A0040&lt;br /&gt;
| (u8 input)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also the &amp;quot;QTM services&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
= QTM service &amp;quot;qtm:sp&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;
| 0x08010040&lt;br /&gt;
| (u8 input) Internally compared with 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| Writes 1 to a flag&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030040&lt;br /&gt;
| Returns a byte loaded from a flag&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| Writes 1 to a flag&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This service has all of the commands listed under the &amp;quot;QTM services&amp;quot; section and the &amp;quot;qtm:s&amp;quot; section, in addition to the above commands.&lt;br /&gt;
&lt;br /&gt;
This service is used by [[NS]] and [[GSP_Services|GSP]]-module, hence no other processes can use this service.&lt;br /&gt;
&lt;br /&gt;
= QTM service &amp;quot;qtm:c&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;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| Writes an output u8 to cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| (u8 input)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The commands for this service are separate from the commands under the &amp;quot;QTM services&amp;quot; section.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AES_Registers&amp;diff=11903</id>
		<title>AES Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AES_Registers&amp;diff=11903"/>
		<updated>2015-03-12T02:57:44Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: Not true anymore plus why reference Gateway in the wiki?&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;
!  NAME&lt;br /&gt;
!  PHYSICAL ADDRESS&lt;br /&gt;
!  WIDTH&lt;br /&gt;
!  RW&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESCNT&lt;br /&gt;
| 0x10009000&lt;br /&gt;
| 4&lt;br /&gt;
| RW&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESBLKCNT&lt;br /&gt;
| 0x10009004&lt;br /&gt;
| 4&lt;br /&gt;
| W?&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESWRFIFO&lt;br /&gt;
| 0x10009008&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESRDFIFO&lt;br /&gt;
| 0x1000900C&lt;br /&gt;
| 4&lt;br /&gt;
| R&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEYSEL&lt;br /&gt;
| 0x10009010&lt;br /&gt;
| 1&lt;br /&gt;
| RW&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEYCNT&lt;br /&gt;
| 0x10009011&lt;br /&gt;
| 1&lt;br /&gt;
| RW&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESCTR&lt;br /&gt;
| 0x10009020&lt;br /&gt;
| 16&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESMAC&lt;br /&gt;
| 0x10009030&lt;br /&gt;
| 16&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEY0&lt;br /&gt;
| 0x10009040&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEY1&lt;br /&gt;
| 0x10009070&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEY2&lt;br /&gt;
| 0x100090A0&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEY3&lt;br /&gt;
| 0x100090D0&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEYFIFO&lt;br /&gt;
| 0x10009100&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEYXFIFO&lt;br /&gt;
| 0x10009104&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| REG_AESKEYYFIFO&lt;br /&gt;
| 0x10009108&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== REG_AESCNT ==&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;
| 4-0&lt;br /&gt;
| Write FIFO count (0-16)&lt;br /&gt;
|-&lt;br /&gt;
| 9-5&lt;br /&gt;
| Read FIFO count (0-16)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Flush write FIFO (1=Clear write FIFO)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Flush read fifo (1=Clear read FIFO)&lt;br /&gt;
|-&lt;br /&gt;
| 18-16&lt;br /&gt;
| MAC size (encoding = (maclen-2)/2)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
|? (MAC related)&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| MAC input control (0 = read MAC from FIFO, 1 = read from MAC register)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| MAC status (0 = invalid, 1 = verified)&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| Output endianness (1=Big endian, 0=Little endian)&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| Input endianness (1=Big endian, 0=Little endian)&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| Output word order (1=Normal order, 0=Reversed order)&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| Input word order (1=Normal order, 0=Reversed order)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| Update keyslot (selects the keyslot specified by REG_AESKEYSEL when this bit is set)&lt;br /&gt;
|-&lt;br /&gt;
| 29-27&lt;br /&gt;
| Mode (0=CCM decrypt, 1=CCM encrypt, 2=CTR, 3=CTR, 4=CBC decrypt, 5=CBC encrypt, 6=ECB decrypt, 7=ECB encrypt)&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| Interrupt enable (1=enable, 0=disable)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Start (1=enable/busy, 0=idle)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When bit31 is clear, the AES engine will handle keyslot-selection when bit26 is set immediately. When bit31 is set, the AES engine won&#039;t handle bit26 immediately, instead the AES engine will automatically handle the already-set bit26 once bit31 clears(current AES operation finishes).&lt;br /&gt;
&lt;br /&gt;
Clearing bit31 while the AES engine is doing crypto will result in the AES engine stopping crypto, once it finishes processing the current block.&lt;br /&gt;
&lt;br /&gt;
== REG_AESBLKCNT ==&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;
|-&lt;br /&gt;
| 16-31&lt;br /&gt;
| (Data length)&amp;gt;&amp;gt;4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== REG_AESWRFIFO/REG_AESRDFIFO ==&lt;br /&gt;
Up to 128 bytes of input data can be buffered.&lt;br /&gt;
&lt;br /&gt;
The input data for the AES crypto operation is written to REG_AESWRFIFO, the output data is read from REG_AESRDFIFO.&lt;br /&gt;
&lt;br /&gt;
Reading from REG_AESRDFIFO when there&#039;s no data available in the RDFIFO will result in reading the last word that was in the RDFIFO.&lt;br /&gt;
&lt;br /&gt;
== REG_AESKEYCNT ==&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;
| 5-0&lt;br /&gt;
| Keyslot&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Hardware key-generator type: 0 = 3DS, 1 = DSi.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| This normally has value 1 written here when updating keys. 0 = disable key FIFO flush, 1 = enable key FIFO flush.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bit6 is only used when keyslots &amp;gt;=4 are used, value1 has the same affect as doing key-init with the TWL keyslots. Bit6 is only checked when a keyY was completely written, for when the final-normalkey needs updated via the key-generator. Changing bit6 has no affect on the generated normalkey when writing to this bit immediately after writing the last keyY word.&lt;br /&gt;
&lt;br /&gt;
== REG_AESCTR ==&lt;br /&gt;
This register specifies the counter (CTR mode), nonce (CCM mode) or the initialization vector (CBC mode) depending on the mode of operation.&lt;br /&gt;
For CBC and CTR mode this register takes up the full 16 bytes, but for CCM mode the nonce is only the first 12 bytes.&lt;br /&gt;
&lt;br /&gt;
== REG_AESMAC ==&lt;br /&gt;
This register specifies the message authentication code (MAC) for use in CCM mode.&lt;br /&gt;
&lt;br /&gt;
== Endianness and word order ==&lt;br /&gt;
When writing to the REG_AESCTR or REG_AESMAC register, the hardware will process the written data according to the current input endianness specified in AESCNT. However, the current specified input word order will not be honored for this register, and always defaults to reversed word order. Therefore, for normal word order, the reversal must be carried out manually if required.&lt;br /&gt;
&lt;br /&gt;
== Keyslot ranges ==&lt;br /&gt;
This is approximately a table of what is set by bootrom before booting into FIRM. Often it appears that keyslots in groups of 4 have the same keyX, and sometimes also same keyY set.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Keyslot&lt;br /&gt;
!  Name&lt;br /&gt;
!  KeyX&lt;br /&gt;
!  KeyY/Normal-key&lt;br /&gt;
!  Console unique.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00-0x03&lt;br /&gt;
| TWL keys.&lt;br /&gt;
| Probably unset.&lt;br /&gt;
| Probably unset.&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07&lt;br /&gt;
| NAND partition keys.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Different for all.&lt;br /&gt;
| Yes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B&lt;br /&gt;
| DSiWare export key, and rest unknown.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Different for all.&lt;br /&gt;
| Yes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C-0x0F.&lt;br /&gt;
| SSL cert key.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| No.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10-0x17&lt;br /&gt;
| -&lt;br /&gt;
| Not set.&lt;br /&gt;
| Not set.&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B:&lt;br /&gt;
| Never used.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Yes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C-0x1F:&lt;br /&gt;
| Never used.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Yes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20-0x23:&lt;br /&gt;
| Never used?&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Only keyX/keyY.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24-0x2B&lt;br /&gt;
| Never used?&lt;br /&gt;
| Individually set.&lt;br /&gt;
| Individually set.&lt;br /&gt;
| Mixed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C-0x2F&lt;br /&gt;
| Various uniques.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Same for all, probably.&lt;br /&gt;
| No.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30-0x33&lt;br /&gt;
| Various.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Same for all???&lt;br /&gt;
| No.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34-0x37&lt;br /&gt;
| Various uses.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Same for all, probably.&lt;br /&gt;
| No.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38-0x3B&lt;br /&gt;
| Various uses.&lt;br /&gt;
| Same for all.&lt;br /&gt;
| Different for all.&lt;br /&gt;
| No.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D-3F&lt;br /&gt;
| Various uses.&lt;br /&gt;
| Individually set.&lt;br /&gt;
| Individually set.&lt;br /&gt;
| No.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Keyslot pairs (0x24, 0x28) and (0x38, 0x3C) shares the same normal-key, while at the same time having different keyX&#039;s. This suggests they were set to same normal-key by bootrom.&lt;br /&gt;
&lt;br /&gt;
== Keyslots ==&lt;br /&gt;
There are 0x40 keyslots, each of which stores three keys called keyX, keyY and normalkey. All keys can be set explicitly, but the normalkey can optionally be generated using a hardware key scrambler instead (see below). There is no way to read the contents of a keyslot.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Keyslot&lt;br /&gt;
!  Description&lt;br /&gt;
!  KeyX&lt;br /&gt;
!  KeyY&lt;br /&gt;
!  Normal-key&lt;br /&gt;
!  Old3DS&lt;br /&gt;
|-&lt;br /&gt;
| 0x00-0x03&lt;br /&gt;
| TWL keys.&lt;br /&gt;
| NATIVE_FIRM hard-boot.&lt;br /&gt;
| NATIVE_FIRM hard-boot.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x04..0x07&lt;br /&gt;
| [[Flash_Filesystem|NAND]] partition keys.&lt;br /&gt;
&lt;br /&gt;
Keyslot is determined by [[NCSD]] partition FS type and encryption type. The New3DS Process9 sets the keyY for keyslot 0x05 (New3DS CTRNAND) to a key from .(ro)data.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| DSiWare export key.&lt;br /&gt;
&lt;br /&gt;
Used for encrypting the all-zero 0x10-byte block in the [[DSiWare_Exports|DSiWare_Exports]] header. Console-unique.&lt;br /&gt;
| See above keyslot info.&lt;br /&gt;
| See above keyslot info.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| SSL-certificate key.&lt;br /&gt;
&lt;br /&gt;
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]].&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| Temporary keyslot.&lt;br /&gt;
&lt;br /&gt;
Used by FIRM for general normal-key crypto. Also used by the New3DS [[FIRM]] arm9 binary loader.&lt;br /&gt;
| Arm9Loader. &lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| Starting with [[5.0.0-11]], NATIVE_FIRM Process9 now sets the keyY for this to the same one it uses for initializing 3 of the keyslots&#039; keyYs from [[PSPXI:EncryptDecryptAes|here]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM boot.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x15&lt;br /&gt;
| Used/initialized by the New3DS arm9 binary loader, see [[FIRM|here]].&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| See previous info for this keyslot.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| Used/initialized by the New3DS arm9 binary loader starting with [[9.5.0-22|9.5.0-X]], see [[FIRM|here]].&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| See previous info for this keyslot.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| 0x18..0x1F&lt;br /&gt;
| These are the New3DS keyslots, where the keyX is generated with keyslot 0x11 by the New3DS arm9 binary [[FIRM|loader]]. As of [[FIRM]] [[9.5.0-22|9.5.0-X]] keyslots 0x1B..0x1F are not yet used by Process9.&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| NATIVE_FIRM / see previous info for these keyslots.&lt;br /&gt;
| See previous info for these keyslots.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| New3DS [[NCCH]] key.&lt;br /&gt;
&lt;br /&gt;
Starting with [[9.3.0-21|9.3.0-X]].&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
| -&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| New3DS gamecard [[Savegames|savedata]] AES-MAC key.&lt;br /&gt;
&lt;br /&gt;
Equivalent of keyslot 0x33, used when a [[NCSD]] flag is set to a certain value (implemented with [[9.3.0-21|9.3.0-X]]).&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
| -&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| New3DS gamecard [[Savegames|savedata]] actual key.&lt;br /&gt;
&lt;br /&gt;
Equivalent of keyslot 0x37, used when a [[NCSD]] flag is set to a certain value (implemented with [[9.3.0-21|9.3.0-X]]).&lt;br /&gt;
| Arm9Loader.&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
| -&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| [[7.0.0-13|v7.0]] [[NCCH]] key.&lt;br /&gt;
| NATIVE_FIRM [[Savegames#6.0.0-11_Savegame_keyY|boot]].&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| [[NCCH|NCCH]] key.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Process9.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D&lt;br /&gt;
| UDS local-WLAN CCMP key.&lt;br /&gt;
&lt;br /&gt;
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E&lt;br /&gt;
| Streetpass key.&lt;br /&gt;
&lt;br /&gt;
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F&lt;br /&gt;
| [[Savegames#6.0.0-11_Savegame_keyY|v6.0]] save key.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| SD/NAND AES-MAC key.&lt;br /&gt;
&lt;br /&gt;
This keyY is initialized via [[Nand/private/movable.sed|movable.sed]]. This is used for calculating the AESMACs under SD [[SD_Filesystem|/Nintendo 3DS/&amp;lt;ID0&amp;gt;/&amp;lt;ID1&amp;gt;/]] (except [[DSiWare_Exports]]) and [[Flash_Filesystem|NAND]] /data/.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| APT wrap key.&lt;br /&gt;
&lt;br /&gt;
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]]. NATIVE_FIRM sets this keyY to the same one used for keyslot 0x2E.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| Unknown.&lt;br /&gt;
&lt;br /&gt;
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| Gamecard [[Savegames|savedata]] AES-MAC.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| SD key.&lt;br /&gt;
&lt;br /&gt;
This keyY is initialized via [[Nand/private/movable.sed|movable.sed]]. This is used for encrypting *all* SD card data under [[SD_Filesystem|/Nintendo 3DS/&amp;lt;ID0&amp;gt;/&amp;lt;ID1&amp;gt;/]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x35&lt;br /&gt;
| Movable.sed key.&lt;br /&gt;
&lt;br /&gt;
This is the keyslot used for movable.sed encryption + AES-MAC with the import/export [[FSPXI:ImportIntegrityVerificationSeed|commands]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x36&lt;br /&gt;
| Unknown. Used by friends module.&lt;br /&gt;
&lt;br /&gt;
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x37&lt;br /&gt;
| Gamecard [[Savegames|savedata]] actual key.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| BOSS key.&lt;br /&gt;
&lt;br /&gt;
See [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| Download Play key, and unknown key.&lt;br /&gt;
&lt;br /&gt;
This keyslot is used for two different keys. One is available via [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]]. NATIVE_FIRM sets this keyY to the same one used for keyslot 0x2E.&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A&lt;br /&gt;
| DSiWare export key.&lt;br /&gt;
&lt;br /&gt;
This keyY is initialized via [[Nand/private/movable.sed|movable.sed]]. This is used for calculating the AESMACs for SD [[DSiWare_Exports]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D&lt;br /&gt;
| Common key.&lt;br /&gt;
&lt;br /&gt;
Used to decrypt title keys in [[Ticket]].&lt;br /&gt;
| Bootrom.&lt;br /&gt;
| NATIVE_FIRM.&lt;br /&gt;
| -&lt;br /&gt;
| Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updating keydata ===&lt;br /&gt;
The contents of the keyslot specified in REG_AESKEYCNT can be updated by consecutively writing four words to REG_AESKEYXFIFO (keyX), REG_AESKEYYFIFO(keyY), or REG_AESKEYFIFO (normalkey).&lt;br /&gt;
&lt;br /&gt;
After writing to a keyslot, the keyslot must be selected again(write REG_AESKEYSEL + set REG_AESCNT bit26), even when writing to the same keyslot. Writing the last word to a key FIFO immediately after selecting a keyslot will not affect the keyslot keydata that gets used at that time, the new keydata will not get used until the keyslot gets selected again.&lt;br /&gt;
&lt;br /&gt;
Writing to the key FIFOs with byte writes results in the AES engine converting the byte to a word for setting the key word, with this: word = (byteval) | (byteval&amp;lt;&amp;lt;8) | (byteval&amp;lt;&amp;lt;16) | (byteval&amp;lt;&amp;lt;24). The result is the same regardless of which FIFO register byte was written to.&lt;br /&gt;
&lt;br /&gt;
The TWL keyslots 0x00-0x03 can be set directly by writing to the REG_AESKEY0-REG_AESKEY3 registers.&lt;br /&gt;
&lt;br /&gt;
The key FIFOs can be written simultaneously. For example, executing the following 4 times will result in the keyX and keyY being set to all-zero(unknown for normalkey): memset(0x10009100, 0, 0x100);&lt;br /&gt;
&lt;br /&gt;
Each key FIFO has a 0x10-byte tmp-buffer for storing the words written to that FIFO. Once the last word is written to a key FIFO, the filled tmp-buffer is then written to the key-data for the keyslot selected by REG_AESKEYCNT at the time the last word was written.&lt;br /&gt;
&lt;br /&gt;
=== keyX ===&lt;br /&gt;
The ARM9 bootrom initializes the keyX for certain 3DS keyslots, the ARM9 bootrom may also initialize the keyY for certain keyslots. In certain cases Process9 may also set the keyX.&lt;br /&gt;
&lt;br /&gt;
=== Hardware key generator ===&lt;br /&gt;
A dedicated hardware key generator can be used to generate a keyslot&#039;s normalkey from its keyX and keyY. The hardware key generator is triggered by writing the keyY, which is the only way to trigger it with the 3DS keyslots. The algorithm used for key generation is unknown.&lt;br /&gt;
&lt;br /&gt;
Unless noted otherwise, all keyslots on retail units use the hardware key-generator.&lt;br /&gt;
&lt;br /&gt;
=== FIRM-launch key clearing ===&lt;br /&gt;
Starting with [[9.0.0-20]] the Process9 FIRM-launch code now &amp;quot;clears&amp;quot; the following AES keyslots, with certain keydata by writing the normal-key: 0x15 and 0x18-0x20. These are the keyslots used by the New3DS [[FIRM]] arm9bin loader(minus keyslot 0x11), the New3DS Process9 does this too.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Recovery_Mode&amp;diff=11832</id>
		<title>Recovery Mode</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Recovery_Mode&amp;diff=11832"/>
		<updated>2015-03-05T06:11:49Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The recovery mode (also known as Safe Mode Boot) can be accessed when turning on the Nintendo 3DS while holding A+R+L+Up(DPad).&lt;br /&gt;
This menu is made to update your Nintendo 3DS through internet, if an update previously failed.&lt;br /&gt;
&lt;br /&gt;
However it is possible to use this menu to delete the nagging update message if your console downloaded an update while in sleep mode. It is believed that this menu simply erases all update data, as it should normally be accessed when the update files are corrupted.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=3DS_System_Flaws&amp;diff=11447</id>
		<title>3DS System Flaws</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=3DS_System_Flaws&amp;diff=11447"/>
		<updated>2015-01-11T21:34:37Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* FIRM Process9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exploits are used to execute unofficial code (homebrew) on the Nintendo 3DS. This page is a list of known 3DS-mode exploits.&lt;br /&gt;
&lt;br /&gt;
==List of 3DS exploits==&lt;br /&gt;
&lt;br /&gt;
==Current Efforts==&lt;br /&gt;
There are people working on finding exploits and documenting the 3DS. Here&#039;s a list of some current efforts being made to make homebrew on the 3DS possible:&lt;br /&gt;
&lt;br /&gt;
* See [[Ninjhax|here]] regarding Ninjhax.&lt;br /&gt;
&lt;br /&gt;
==Stale / Rejected Efforts==&lt;br /&gt;
* Neimod has been working on a RAM dumping setup for a little while now. He&#039;s de-soldered the 3DS&#039;s RAM chip and hooked it and the RAM pinouts on the 3DS&#039; PCB up to a custom RAM dumping setup. Recent photos show that the setup is working quite well, with the 3DS successfully booting up. Pictures of neimod&#039;s work can be found on [http://www.flickr.com/photos/neimod/ his Flickr stream].&lt;br /&gt;
&lt;br /&gt;
      Neimod&#039;s flickr stream is now private and his work is considered awesome.&lt;br /&gt;
&lt;br /&gt;
* A loser (who will remain unnamed) has released CFW and CIA installers along with other stolen and illegal stuff.&lt;br /&gt;
&lt;br /&gt;
==Failed attempts==&lt;br /&gt;
Here are listed all attempts at exploiting 3DS software that have failed so far.&lt;br /&gt;
&lt;br /&gt;
* Pushmo (3DSWare), QR codes: level name is properly limited to 16 characters, game doesn&#039;t crash with a longer name. The only possible crashes are triggered by out-of-bounds array index values, these crashes are not exploitable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pyramids (3DSWare), QR codes: no strings. Only crashes are from out-of-bounds values (like background ID) and are not exploitable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 3DS browser, 2^32 characters long string: this is similar to the vulnerability fixed [http://git.chromium.org/gitweb/?p=external/Webkit.git;a=commitdiff;h=ec471f16fbd1f879cb631f9b022fd16acd75f4d4 here], concat-large-strings-crash2.html triggers a crash which is about the same as the one triggered by a 2^32 string. Most of the time this vulnerability will cause a memory page permissions fault, since the WebKit code attempts to copy the string text data to the output buffer located in read-only [[CRO0|CRO]] heap memory. The only difference between a crash triggered by a 2^32 string and the concat-large-strings-crash2.html crash is at the former copies the string data using the original string length(like 1 text character for &amp;quot;x&amp;quot;, 4 for &amp;quot;xxxx&amp;quot;) while the latter attempts to copy &amp;gt;12MB. In some &#039;&#039;very&#039;&#039; rare cases a thread separate from the string data-copy thread will crash, this might be exploitable. However, this is mostly useless since it rarely crashes this way.&lt;br /&gt;
&lt;br /&gt;
==Tips and info==&lt;br /&gt;
The 3DS uses the XN feature of the ARM processor, and only apps that have the necessary permissions in their headers can set memory to be executable. This means that although a usable buffer overflow exploit would still be useful, it would not go the entire way towards allowing code to be run in an easy or practical fashion (like an actual homebrew launcher). For that, an exploit in the system is required. A buffer overflow exploit does, however, provide enough wiggle room through the use of return-oriented programming to potentially trigger a system exploit.&lt;br /&gt;
&lt;br /&gt;
SD card [[extdata]] and SD savegames can be attacked, for consoles where the console-unique [[Nand/private/movable.sed|movable.sed]] was dumped.&lt;br /&gt;
&lt;br /&gt;
Note that the publicly-available &amp;lt;v5.0 total-control exploits are [[FIRM|Process9]] exploits, not &amp;quot;kernel exploits&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==System flaws==&lt;br /&gt;
&lt;br /&gt;
=== [[FIRM]] Process9 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
!  Last FIRM version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| This can&#039;t be exploited from ARM11 userland.&lt;br /&gt;
| ARM9 code execution&lt;br /&gt;
| None&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[Process_Services_PXI|ps:VerifyRsaSha256]] buffer overflow&lt;br /&gt;
| Unchecked copy to a buffer in Process9&#039;s .bss. The buffer is located before the pxi cmdhandler threads&#039; stacks.&lt;br /&gt;
| ARM9 code execution&lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM11 kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
!  Last FIRM version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
|-&lt;br /&gt;
|  [[SVC]] table too small&lt;br /&gt;
|  The table of function pointers for SVC&#039;s only contains entries up to 0x7D, but the biggest allowed SVC for the table is 0x7F. Thus, executing SVC7E or SVC7F would make the SVC-handler read after the buffer, and interpret some ARM instructions as function pointers.&lt;br /&gt;
&lt;br /&gt;
However, this would require patching the kernel .text or modifying SVC-access-control. Even if you could get these to execute, they would still jump to memory that isn&#039;t mapped as executable.&lt;br /&gt;
| &lt;br /&gt;
|  None&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
|  [[SVC|svcBackdoor (0x7B)]]&lt;br /&gt;
|  This backdoor allows executing SVC-mode code at the user-specified code-address. This is used by Process9, using this on the ARM11(with NATIVE_FIRM) requires patching the kernel .text or modifying SVC-access-control.&lt;br /&gt;
| See description&lt;br /&gt;
|  None&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Memory_layout#ARM11_Detailed_virtual_memory_map|0xEFF00000]] / 0xDFF00000 ARM11 kernel virtual-memory&lt;br /&gt;
| The ARM11 kernel-mode 0xEFF00000/0xDFF00000 virtual-memory(size 0x100000) is mapped to phys-mem 0x1FF00000(entire DSP-mem + entire AXIWRAM), with permissions RW-. This is used during ARM11 kernel startup, this never seems to be used after that, however.&lt;br /&gt;
| &lt;br /&gt;
| None&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| When combined with other flaws: ARM11-kernelmode code execution&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| February 2014&lt;br /&gt;
|-&lt;br /&gt;
| PXI [[RPC_Command_Structure|Command]] input/output buffer permissions&lt;br /&gt;
| Originally the ARM11-kernel didn&#039;t check permissions for PXI input/output buffers for commands. Starting with [[6.0.0-11|6.0.0]] PXI input/output buffers must have RW permissions, otherwise kernelpanic is triggered.&lt;br /&gt;
| &lt;br /&gt;
| [[6.0.0-11|6.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcStartInterProcessDma]]&lt;br /&gt;
| For svcStartInterProcessDma, the kernel code had the following flaws:&lt;br /&gt;
&lt;br /&gt;
* Originally the ARM11-kernel read the input DmaConfig structure directly in kernel-mode(ldr(b/h) instructions), without checking whether the DmaConfig address is readable under userland. This was fixed by copying that structure to the SVC-mode stack, using the ldrbt instruction.&lt;br /&gt;
&lt;br /&gt;
* Integer overflows for srcaddr+size and dstaddr+size are now checked(with [[6.0.0-11]]), which were not checked before.&lt;br /&gt;
&lt;br /&gt;
* The kernel now also checks whether the srcaddr/dstaddr (+size) is within userland memory (0x20000000), the kernel now (with [[6.0.0-11]]) returns an error when the address is beyond userland memory. Using an address &amp;gt;=0x20000000 would result in the kernel reading from the process L1 MMU table, beyond the memory allocated for that MMU table(for vaddr-&amp;gt;physaddr conversion). &lt;br /&gt;
| &lt;br /&gt;
| [[6.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| DmaConfig issue: unknown. The rest: 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcControlMemory]] Parameter checks&lt;br /&gt;
| For svcControlMemory the parameter check had these two flaws:&lt;br /&gt;
&lt;br /&gt;
* The allowed range for addr0, addr1, size parameters depends on which MemoryOperation is being specified. The limitation for GSP heap was only checked if op=(u32)0x10003. By setting a random bit in op that has no meaning (like bit17?), op would instead be (u32)0x30003, and the range-check would be less strict and not accurate. However, the kernel doesn&#039;t actually use the input address for LINEAR memory-mapping at all besides the range-checks, so this isn&#039;t actually useful. This was fixed in the kernel by just checking for the LINEAR bit, instead of comparing the entire MemoryOperation value with 0x10003.&lt;br /&gt;
&lt;br /&gt;
* Integer overflows on (addr0+size) are now checked that previously weren&#039;t (this also applies to most other address checks elsewhere in the kernel).&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[RPC_Command_Structure|Command]] request/response buffer overflow&lt;br /&gt;
| Originally the kernel did not check the word-values from the command-header. Starting with [[5.0.0-11]], the kernel will trigger a kernelpanic() when the total word-size of the entire command(including the cmd-header) is larger than 0x40-words (0x100-bytes). This allows overwriting threadlocalstorage+0x180 in the destination thread. However, since the data written there would be translate parameters (such as header-words + buffer addresses), exploiting this would likely be very difficult, if possible at all.&lt;br /&gt;
&lt;br /&gt;
If the two words at threadlocalstorage+0x180 could be overwritten with controlled data this way, one could then use a command with a buffer-header of &amp;lt;nowiki&amp;gt;((size&amp;lt;&amp;lt;14) | 2)&amp;lt;/nowiki&amp;gt; to write arbitrary memory to any RW userland memory in the destination process.&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| v4.1 FIRM -&amp;gt; v5.0 code diff&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|SVC stack allocation overflows]]&lt;br /&gt;
| &lt;br /&gt;
* Syscalls that allocate a variable-length array on stack, only checked bit31 before multiplying by 4/16 (when calculating how much memory to allocate). If a large integer was passed as input to one of these syscalls, an integer overflow would occur, and too little memory would have been allocated on stack resulting in a buffer overrun. &lt;br /&gt;
* The alignment (size+7)&amp;amp;~7 calculation before allocation was not checked for integer overflow.&lt;br /&gt;
&lt;br /&gt;
This might allow for ARM11 kernel code-execution.&lt;br /&gt;
&lt;br /&gt;
(Applies to svcSetResourceLimitValues, svcGetThreadList, svcGetProcessList, svcReplyAndReceive, svcWaitSynchronizationN.)&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| v4.1 FIRM -&amp;gt; v5.0 code diff&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcControlMemory]] MemoryOperation MAP memory-permissions&lt;br /&gt;
| svcControlMemory with MemoryOperation=MAP allows mapping the already-mapped process virtual-mem at addr1, to addr0. The lowest address permitted for addr1 is 0x00100000. Originally the ARM11 kernel didn&#039;t check memory permissions for addr1. Therefore .text as addr1 could be mapped elsewhere as RW- memory, which allowed ARM11 userland code-execution.&lt;br /&gt;
| &lt;br /&gt;
| [[4.1.0-8]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[RPC_Command_Structure|Command]] input/output buffer permissions&lt;br /&gt;
| Originally the ARM11 kernel didn&#039;t check memory permissions for the input/output buffers for commands. Starting with [[4.0.0-7]] the ARM11 kernel will trigger a kernelpanic() if the input/output buffers don&#039;t have the required memory permissions. For example, this allowed a FSUSER file-read to .text, which therefore allowed ARM11-userland code execution.&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcReadProcessMemory/svcWriteProcessMemory memory]] permissions&lt;br /&gt;
| Originally the kernel only checked the first page(0x1000-bytes) of the src/dst buffers, for svcReadProcessMemory and svcWriteProcessMemory. There is no known retail processes which have access to these SVCs.&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| &lt;br /&gt;
| 2012?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[FIRM]] ARM11 modules ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
|-&lt;br /&gt;
| [[Services|&amp;quot;srv:pm&amp;quot;]] process registration&lt;br /&gt;
| Originally any process had access to the port &amp;quot;srv:pm&amp;quot;. The PID&#039;s used for the (un)registration commands are not checked either. This allowed any process to re-register itself with &amp;quot;srv:pm&amp;quot;, and therefore allowed the process to give itself access to any service, bypassing the exheader service-access-control list.&lt;br /&gt;
&lt;br /&gt;
This was fixed in [[7.0.0-13]]: starting with [[7.0.0-13]] &amp;quot;srv:pm&amp;quot; is now a service instead of a globally accessible port. Only processes with PID&#039;s less than 6 (in other words: fs, ldr, sm, pm, pxi modules) have access to it. With [[7.0.0-13]] there can only be one session for &amp;quot;srv:pm&amp;quot; open at a time(this is used by pm module), svcBreak will be executed if more sessions are opened by the processes which can access this.&lt;br /&gt;
&lt;br /&gt;
This flaw was needed for exploiting the &amp;lt;=v4.x Process9 PXI vulnerabilities from ARM11 userland ROP, since most applications don&#039;t have access to those service(s).&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM11 system modules ===&lt;br /&gt;
&lt;br /&gt;
=== ARM11 system applications and applets  ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
|-&lt;br /&gt;
| 3DS [[System Settings]] DS profile string stack-smash&lt;br /&gt;
| Too long or corrupted strings (01Ah  2   Nickname length in characters     050h  2   Message length in characters) in the NVRAM DS user settings (System Settings-&amp;gt;Other Settings-&amp;gt;Profile-&amp;gt;Nintendo DS Profile) cause it to crash in 3DS-mode due to a stack-smash. The DSi is not vulnerable to this, DSi launcher(menu) and DSi System Settings will reset the NVRAM user-settings if the length field values are too long(same result as when the CRCs are invalid). TWL_FIRM also resets the NVRAM user-settings when the string-length(s) are too long.&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=3DS_System_Flaws&amp;diff=11405</id>
		<title>3DS System Flaws</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=3DS_System_Flaws&amp;diff=11405"/>
		<updated>2015-01-07T21:47:05Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* ARM11 kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exploits are used to execute unofficial code (homebrew) on the Nintendo 3DS. This page is a list of known 3DS-mode exploits.&lt;br /&gt;
&lt;br /&gt;
==List of 3DS exploits==&lt;br /&gt;
&lt;br /&gt;
==Current Efforts==&lt;br /&gt;
There are people working on finding exploits and documenting the 3DS. Here&#039;s a list of some current efforts being made to make homebrew on the 3DS possible:&lt;br /&gt;
&lt;br /&gt;
* See [[Ninjhax|here]] regarding Ninjhax.&lt;br /&gt;
&lt;br /&gt;
==Stale / Rejected Efforts==&lt;br /&gt;
* Neimod has been working on a RAM dumping setup for a little while now. He&#039;s de-soldered the 3DS&#039;s RAM chip and hooked it and the RAM pinouts on the 3DS&#039; PCB up to a custom RAM dumping setup. Recent photos show that the setup is working quite well, with the 3DS successfully booting up. Pictures of neimod&#039;s work can be found on [http://www.flickr.com/photos/neimod/ his Flickr stream].&lt;br /&gt;
&lt;br /&gt;
      Neimod&#039;s flickr stream is now private and his work is considered awesome.&lt;br /&gt;
&lt;br /&gt;
* A loser (who will remain unnamed) has released CFW and CIA installers along with other stolen and illegal stuff.&lt;br /&gt;
&lt;br /&gt;
==Failed attempts==&lt;br /&gt;
Here are listed all attempts at exploiting 3DS software that have failed so far.&lt;br /&gt;
&lt;br /&gt;
* Pushmo (3DSWare), QR codes: level name is properly limited to 16 characters, game doesn&#039;t crash with a longer name. The only possible crashes are triggered by out-of-bounds array index values, these crashes are not exploitable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pyramids (3DSWare), QR codes: no strings. Only crashes are from out-of-bounds values (like background ID) and are not exploitable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 3DS browser, 2^32 characters long string: this is similar to the vulnerability fixed [http://git.chromium.org/gitweb/?p=external/Webkit.git;a=commitdiff;h=ec471f16fbd1f879cb631f9b022fd16acd75f4d4 here], concat-large-strings-crash2.html triggers a crash which is about the same as the one triggered by a 2^32 string. Most of the time this vulnerability will cause a memory page permissions fault, since the WebKit code attempts to copy the string text data to the output buffer located in read-only [[CRO0|CRO]] heap memory. The only difference between a crash triggered by a 2^32 string and the concat-large-strings-crash2.html crash is at the former copies the string data using the original string length(like 1 text character for &amp;quot;x&amp;quot;, 4 for &amp;quot;xxxx&amp;quot;) while the latter attempts to copy &amp;gt;12MB. In some &#039;&#039;very&#039;&#039; rare cases a thread separate from the string data-copy thread will crash, this might be exploitable. However, this is mostly useless since it rarely crashes this way.&lt;br /&gt;
&lt;br /&gt;
==Tips and info==&lt;br /&gt;
The 3DS uses the XN feature of the ARM processor, and only apps that have the necessary permissions in their headers can set memory to be executable. This means that although a usable buffer overflow exploit would still be useful, it would not go the entire way towards allowing code to be run in an easy or practical fashion (like an actual homebrew launcher). For that, an exploit in the system is required. A buffer overflow exploit does, however, provide enough wiggle room through the use of return-oriented programming to potentially trigger a system exploit.&lt;br /&gt;
&lt;br /&gt;
SD card [[extdata]] and SD savegames can be attacked, for consoles where the console-unique [[Nand/private/movable.sed|movable.sed]] was dumped.&lt;br /&gt;
&lt;br /&gt;
Note that the publicly-available &amp;lt;v5.0 total-control exploits are [[FIRM|Process9]] exploits, not &amp;quot;kernel exploits&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==System flaws==&lt;br /&gt;
&lt;br /&gt;
=== [[FIRM]] Process9 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
!  Last FIRM version this was flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| This can&#039;t be exploited from ARM11 userland.&lt;br /&gt;
| ARM9 code execution&lt;br /&gt;
| None&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| 2012&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM11 kernel ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Successful exploitation result&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
!  Last FIRM version this was flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
|-&lt;br /&gt;
|  [[SVC]] table too small&lt;br /&gt;
|  The table of function pointers for SVC&#039;s only contains entries up to 0x7D, but the biggest allowed SVC for the table is 0x7F. Thus, executing SVC7E or SVC7F would make the SVC-handler read after the buffer, and interpret some ARM instructions as function pointers.&lt;br /&gt;
&lt;br /&gt;
However, this would require patching the kernel .text or modifying SVC-access-control. Even if you could get these to execute, they would still jump to memory that isn&#039;t mapped as executable.&lt;br /&gt;
| &lt;br /&gt;
|  None&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
|  [[SVC|svcBackdoor (0x7B)]]&lt;br /&gt;
|  This backdoor allows executing SVC-mode code at the user-specified code-address. This is used by Process9, using this on the ARM11(with NATIVE_FIRM) requires patching the kernel .text or modifying SVC-access-control.&lt;br /&gt;
| See description&lt;br /&gt;
|  None&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Memory_layout#ARM11_Detailed_virtual_memory_map|0xEFF00000]] / 0xDFF00000 ARM11 kernel virtual-memory&lt;br /&gt;
| The ARM11 kernel-mode 0xEFF00000/0xDFF00000 virtual-memory(size 0x100000) is mapped to phys-mem 0x1FF00000(entire DSP-mem + entire AXIWRAM), with permissions RW-. This is used during ARM11 kernel startup, this never seems to be used after that, however.&lt;br /&gt;
| &lt;br /&gt;
| None&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| When combined with other flaws: ARM11-kernelmode code execution&lt;br /&gt;
| [[9.3.0-21|9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| February 2014&lt;br /&gt;
|-&lt;br /&gt;
| PXI [[RPC_Command_Structure|Command]] input/output buffer permissions&lt;br /&gt;
| Originally the ARM11-kernel didn&#039;t check permissions for PXI input/output buffers for commands. Starting with [[6.0.0-11|6.0.0]] PXI input/output buffers must have RW permissions, otherwise kernelpanic is triggered.&lt;br /&gt;
| &lt;br /&gt;
| [[6.0.0-11|6.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcStartInterProcessDma]]&lt;br /&gt;
| For svcStartInterProcessDma, the kernel code had the following flaws:&lt;br /&gt;
&lt;br /&gt;
* Originally the ARM11-kernel read the input DmaConfig structure directly in kernel-mode(ldr(b/h) instructions), without checking whether the DmaConfig address is readable under userland. This was fixed by copying that structure to the SVC-mode stack, using the ldrbt instruction.&lt;br /&gt;
&lt;br /&gt;
* Integer overflows for srcaddr+size and dstaddr+size are now checked(with [[6.0.0-11]]), which were not checked before.&lt;br /&gt;
&lt;br /&gt;
* The kernel now also checks whether the srcaddr/dstaddr (+size) is within userland memory (0x20000000), the kernel now (with [[6.0.0-11]]) returns an error when the address is beyond userland memory. Using an address &amp;gt;=0x20000000 would result in the kernel reading from the process L1 MMU table, beyond the memory allocated for that MMU table(for vaddr-&amp;gt;physaddr conversion). &lt;br /&gt;
| &lt;br /&gt;
| [[6.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| DmaConfig issue: unknown. The rest: 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcControlMemory]] Parameter checks&lt;br /&gt;
| For svcControlMemory the parameter check had these two flaws:&lt;br /&gt;
&lt;br /&gt;
* The allowed range for addr0, addr1, size parameters depends on which MemoryOperation is being specified. The limitation for GSP heap was only checked if op=(u32)0x10003. By setting a random bit in op that has no meaning (like bit17?), op would instead be (u32)0x30003, and the range-check would be less strict and not accurate. However, the kernel doesn&#039;t actually use the input address for LINEAR memory-mapping at all besides the range-checks, so this isn&#039;t actually useful. This was fixed in the kernel by just checking for the LINEAR bit, instead of comparing the entire MemoryOperation value with 0x10003.&lt;br /&gt;
&lt;br /&gt;
* Integer overflows on (addr0+size) are now checked that previously weren&#039;t (this also applies to most other address checks elsewhere in the kernel).&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[RPC_Command_Structure|Command]] request/response buffer overflow&lt;br /&gt;
| Originally the kernel did not check the word-values from the command-header. Starting with [[5.0.0-11]], the kernel will trigger a kernelpanic() when the total word-size of the entire command(including the cmd-header) is larger than 0x40-words (0x100-bytes). This allows overwriting threadlocalstorage+0x180 in the destination thread. However, since the data written there would be translate parameters (such as header-words + buffer addresses), exploiting this would likely be very difficult, if possible at all.&lt;br /&gt;
&lt;br /&gt;
If the two words at threadlocalstorage+0x180 could be overwritten with controlled data this way, one could then use a command with a buffer-header of &amp;lt;nowiki&amp;gt;((size&amp;lt;&amp;lt;14) | 2)&amp;lt;/nowiki&amp;gt; to write arbitrary memory to any RW userland memory in the destination process.&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| v4.1 FIRM -&amp;gt; v5.0 code diff&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|SVC stack allocation overflows]]&lt;br /&gt;
| &lt;br /&gt;
* Syscalls that allocate a variable-length array on stack, only checked bit31 before multiplying by 4/16 (when calculating how much memory to allocate). If a large integer was passed as input to one of these syscalls, an integer overflow would occur, and too little memory would have been allocated on stack resulting in a buffer overrun. &lt;br /&gt;
* The alignment (size+7)&amp;amp;~7 calculation before allocation was not checked for integer overflow.&lt;br /&gt;
&lt;br /&gt;
This might allow for ARM11 kernel code-execution.&lt;br /&gt;
&lt;br /&gt;
(Applies to svcSetResourceLimitValues, svcGetThreadList, svcGetProcessList, svcReplyAndReceive, svcWaitSynchronizationN.)&lt;br /&gt;
| &lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| &lt;br /&gt;
| v4.1 FIRM -&amp;gt; v5.0 code diff&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcControlMemory]] MemoryOperation MAP memory-permissions&lt;br /&gt;
| svcControlMemory with MemoryOperation=MAP allows mapping the already-mapped process virtual-mem at addr1, to addr0. The lowest address permitted for addr1 is 0x00100000. Originally the ARM11 kernel didn&#039;t check memory permissions for addr1. Therefore .text as addr1 could be mapped elsewhere as RW- memory, which allowed ARM11 userland code-execution.&lt;br /&gt;
| &lt;br /&gt;
| [[4.1.0-8]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[RPC_Command_Structure|Command]] input/output buffer permissions&lt;br /&gt;
| Originally the ARM11 kernel didn&#039;t check memory permissions for the input/output buffers for commands. Starting with [[4.0.0-7]] the ARM11 kernel will trigger a kernelpanic() if the input/output buffers don&#039;t have the required memory permissions. For example, this allowed a FSUSER file-read to .text, which therefore allowed ARM11-userland code execution.&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| &lt;br /&gt;
| 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[SVC|svcReadProcessMemory/svcWriteProcessMemory memory]] permissions&lt;br /&gt;
| Originally the kernel only checked the first page(0x1000-bytes) of the src/dst buffers, for svcReadProcessMemory and svcWriteProcessMemory. There is no known retail processes which have access to these SVCs.&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| &lt;br /&gt;
| 2012?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[FIRM]] ARM11 modules ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
|-&lt;br /&gt;
| [[Services|&amp;quot;srv:pm&amp;quot;]] process registration&lt;br /&gt;
| Originally any process had access to the port &amp;quot;srv:pm&amp;quot;. The PID&#039;s used for the (un)registration commands are not checked either. This allowed any process to re-register itself with &amp;quot;srv:pm&amp;quot;, and therefore allowed the process to give itself access to any service, bypassing the exheader service-access-control list.&lt;br /&gt;
&lt;br /&gt;
This was fixed in [[7.0.0-13]]: starting with [[7.0.0-13]] &amp;quot;srv:pm&amp;quot; is now a service instead of a globally accessible port. Only processes with PID&#039;s less than 6 (in other words: fs, ldr, sm, pm, pxi modules) have access to it. With [[7.0.0-13]] there can only be one session for &amp;quot;srv:pm&amp;quot; open at a time(this is used by pm module), svcBreak will be executed if more sessions are opened by the processes which can access this.&lt;br /&gt;
&lt;br /&gt;
This flaw was needed for exploiting the &amp;lt;=v4.x Process9 PXI vulnerabilities from ARM11 userland ROP, since most applications don&#039;t have access to those service(s).&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM11 system modules ===&lt;br /&gt;
&lt;br /&gt;
=== ARM11 system applications and applets  ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in system version&lt;br /&gt;
|-&lt;br /&gt;
| 3DS [[System Settings]] DS profile string stack-smash&lt;br /&gt;
| Too long or corrupted strings (01Ah  2   Nickname length in characters     050h  2   Message length in characters) in the NVRAM DS user settings (System Settings-&amp;gt;Other Settings-&amp;gt;Profile-&amp;gt;Nintendo DS Profile) cause it to crash in 3DS-mode due to a stack-smash. The DSi is not vulnerable to this, DSi launcher(menu) and DSi System Settings will reset the NVRAM user-settings if the length field values are too long(same result as when the CRCs are invalid). TWL_FIRM also resets the NVRAM user-settings when the string-length(s) are too long.&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11188</id>
		<title>HTTP Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11188"/>
		<updated>2014-12-16T02:45:35Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* HTTP service &amp;quot;http:C&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= HTTP service &amp;quot;http:C&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;
| 0x00010044&lt;br /&gt;
| [[HTTPC:Initialize|Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[HTTPC:CreateContext|CreateContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[HTTPC:CloseContext|CloseContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| CancelConnection (Context)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| [[HTTPC:GetRequestState|GetRequestState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060040&lt;br /&gt;
| [[HTTPC:GetDownloadSizeState|GetDownloadSizeState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| GetRequestError&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080042&lt;br /&gt;
| [[HTTPC:InitializeConnectionSession|InitializeConnectionSession]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| [[HTTPC:BeginRequest|BeginRequest]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0040&lt;br /&gt;
| BeginRequestAsync&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0082&lt;br /&gt;
| [[HTTPC:ReceiveData|ReceiveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0102&lt;br /&gt;
| [[HTTPC:ReceiveDataTimeout|ReceiveDataTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0146&lt;br /&gt;
| SetProxy&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0040&lt;br /&gt;
| [[HTTPC:SetProxyDefault|SetProxyDefault]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C4&lt;br /&gt;
| SetBasicAuthorization (char *user, u32 user_size, char *pass, u32 pass_size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100080&lt;br /&gt;
| SetSocketBufferSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C4&lt;br /&gt;
| [[HTTPC:AddRequestHeader|AddRequestHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C4&lt;br /&gt;
| [[HTTPC:AddPostDataAscii|AddPostDataAscii]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001300C4&lt;br /&gt;
| AddPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082&lt;br /&gt;
| AddPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080&lt;br /&gt;
| SetPostDataType(u8 enum)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001600C4&lt;br /&gt;
| SendPostDataAscii&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170144&lt;br /&gt;
| SendPostDataAsciiTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001800C4&lt;br /&gt;
| SendPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190144&lt;br /&gt;
| SendPostDataBinaryTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0082&lt;br /&gt;
| SendPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0102&lt;br /&gt;
| [[HTTPC:SendPOSTDataTimeout|SendPOSTDataRawTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0080&lt;br /&gt;
| SetPostDataEncoding&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0040&lt;br /&gt;
| NotifyFinishSendPostData&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E00C4&lt;br /&gt;
| [[HTTPC:GetResponseHeader|GetResponseHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0144&lt;br /&gt;
| [[HTTPC:GetResponseHeaderTimeout|GetResponseHeaderTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200082&lt;br /&gt;
| [[HTTPC:GetResponseData|GetResponseData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210102&lt;br /&gt;
| GetResponseDataTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220040&lt;br /&gt;
| [[HTTPC:GetResponseStatusCode|GetResponseStatusCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002300C0&lt;br /&gt;
| [[HTTPC:GetResponseStatusCodeTimeout|GetResponseStatusCodeTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240082&lt;br /&gt;
| [[HTTPC:AddTrustedRootCA|AddTrustedRootCA]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00260080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002700C4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00280080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00290080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002F0082&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00300080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00310080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00320084&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00330040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00350186&lt;br /&gt;
| SetDefaultProxy&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360000&lt;br /&gt;
| ClearDNSCache&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370080&lt;br /&gt;
| SetKeepAlive (bool)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003800C0&lt;br /&gt;
| SetPostDataTypeSize (u8 enum, u32 size) (similar to SetPostDataType)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390000&lt;br /&gt;
| Finalize&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
|&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;
| 0x00400082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0041....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0042....&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11187</id>
		<title>HTTP Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11187"/>
		<updated>2014-12-16T02:22:00Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= HTTP service &amp;quot;http:C&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;
| 0x00010044&lt;br /&gt;
| [[HTTPC:Initialize|Initialize]] ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[HTTPC:CreateContext|CreateContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[HTTPC:CloseContext|CloseContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| CancelConnection (Context)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| [[HTTPC:GetRequestState|GetRequestState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060040&lt;br /&gt;
| [[HTTPC:GetDownloadSizeState|GetDownloadSizeState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| GetRequestError&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080042&lt;br /&gt;
| [[HTTPC:InitializeConnectionSession|InitializeConnectionSession]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| [[HTTPC:BeginRequest|BeginRequest]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0040&lt;br /&gt;
| BeginRequestAsync&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0082&lt;br /&gt;
| [[HTTPC:ReceiveData|ReceiveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0102&lt;br /&gt;
| [[HTTPC:ReceiveDataTimeout|ReceiveDataTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0146&lt;br /&gt;
| SetProxy&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0040&lt;br /&gt;
| [[HTTPC:SetProxyDefault|SetProxyDefault]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C4&lt;br /&gt;
| SetBasicAuthorization (char *user, u32 user_size, char *pass, u32 pass_size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100080&lt;br /&gt;
| SetSocketBufferSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C4&lt;br /&gt;
| [[HTTPC:AddRequestHeader|AddRequestHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C4&lt;br /&gt;
| [[HTTPC:AddPostDataAscii|AddPostDataAscii]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001300C4&lt;br /&gt;
| AddPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082&lt;br /&gt;
| AddPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080&lt;br /&gt;
| SetPostDataType(u8 enum)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001600C4&lt;br /&gt;
| SendPostDataAscii&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170144&lt;br /&gt;
| SendPostDataAsciiTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001800C4&lt;br /&gt;
| SendPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190144&lt;br /&gt;
| SendPostDataBinaryTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0082&lt;br /&gt;
| SendPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0102&lt;br /&gt;
| [[HTTPC:SendPOSTDataTimeout|SendPOSTDataRawTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0080&lt;br /&gt;
| SetPostDataEncoding&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0040&lt;br /&gt;
| NofityFinishSendPostData&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E00C4&lt;br /&gt;
| [[HTTPC:GetResponseHeader|GetResponseHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0144&lt;br /&gt;
| [[HTTPC:GetResponseHeaderTimeout|GetResponseHeaderTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200082&lt;br /&gt;
| [[HTTPC:GetResponseData|GetResponseData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210102&lt;br /&gt;
| GetResponseDataTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220040&lt;br /&gt;
| [[HTTPC:GetResponseStatusCode|GetResponseStatusCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002300C0&lt;br /&gt;
| [[HTTPC:GetResponseStatusCodeTimeout|GetResponseStatusCodeTimeout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240082&lt;br /&gt;
| [[HTTPC:AddTrustedRootCA|AddTrustedRootCA]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00260080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002700C4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00280080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00290080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002F0082&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00300080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00310080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00320084&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00330040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00350186&lt;br /&gt;
| SetDefaultProxy&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360000&lt;br /&gt;
| ClearDNSCache&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370080&lt;br /&gt;
| SetKeepAlive (bool)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003800C0&lt;br /&gt;
| SetPostDataTypeSize (u8 enum, u32 size) (similar to SetPostDataType)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390000&lt;br /&gt;
| Finalize&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
|&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;
| 0x00400082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0041....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0042....&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseStatusCodeTimeout&amp;diff=11186</id>
		<title>HTTPC:GetResponseStatusCodeTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseStatusCodeTimeout&amp;diff=11186"/>
		<updated>2014-12-16T01:35:44Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x002300C0]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| u64 nanoseconds timeout&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| HTTP response status code&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseStatusCodeDelay&amp;diff=11185</id>
		<title>HTTPC:GetResponseStatusCodeDelay</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseStatusCodeDelay&amp;diff=11185"/>
		<updated>2014-12-16T01:35:30Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:GetResponseStatusCodeDelay to HTTPC:GetResponseStatusCodeTimeout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[HTTPC:GetResponseStatusCodeTimeout]]&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseStatusCodeTimeout&amp;diff=11184</id>
		<title>HTTPC:GetResponseStatusCodeTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseStatusCodeTimeout&amp;diff=11184"/>
		<updated>2014-12-16T01:35:30Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:GetResponseStatusCodeDelay to HTTPC:GetResponseStatusCodeTimeout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x002300C0]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2-3&lt;br /&gt;
| u64 nanoseconds [[HTTPC:ReceiveDataDelay|delay]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| HTTP response status code&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseHeaderDelay&amp;diff=11183</id>
		<title>HTTPC:GetResponseHeaderDelay</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseHeaderDelay&amp;diff=11183"/>
		<updated>2014-12-16T01:34:46Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:GetResponseHeaderDelay to HTTPC:GetResponseHeaderTimeout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[HTTPC:GetResponseHeaderTimeout]]&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseHeaderTimeout&amp;diff=11182</id>
		<title>HTTPC:GetResponseHeaderTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseHeaderTimeout&amp;diff=11182"/>
		<updated>2014-12-16T01:34:46Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:GetResponseHeaderDelay to HTTPC:GetResponseHeaderTimeout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x001F0144]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Header name buffer size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Header value buffer max size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| u64 nanoseconds timeout&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| (HeaderNameSize&amp;lt;&amp;lt;14)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xC02&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Header name input data pointer&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| (HeaderValueSize&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 12&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Header value output data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Total header value buffer size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This obtains the string value for the specified HTTP response header. This returns error-code 0xD8A0A028 when the specified header doesn&#039;t exist in the received response.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseHeaderTimeout&amp;diff=11181</id>
		<title>HTTPC:GetResponseHeaderTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:GetResponseHeaderTimeout&amp;diff=11181"/>
		<updated>2014-12-16T01:34:37Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x001F0144]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Header name buffer size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Header value buffer max size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 4-5&lt;br /&gt;
| u64 nanoseconds timeout&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| (HeaderNameSize&amp;lt;&amp;lt;14)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xC02&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Header name input data pointer&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| (HeaderValueSize&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 12&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Header value output data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Total header value buffer size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This obtains the string value for the specified HTTP response header. This returns error-code 0xD8A0A028 when the specified header doesn&#039;t exist in the received response.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:SendPOSTDataTimeout&amp;diff=11180</id>
		<title>HTTPC:SendPOSTDataTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:SendPOSTDataTimeout&amp;diff=11180"/>
		<updated>2014-12-16T01:33:33Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x001B0102]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Buffer size&lt;br /&gt;
|-&lt;br /&gt;
| 3-4&lt;br /&gt;
| u64 nanoseconds timeout&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (Size&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 10&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Input data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This uploads the specified raw POST data content.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:SendPOSTDataDelay&amp;diff=11179</id>
		<title>HTTPC:SendPOSTDataDelay</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:SendPOSTDataDelay&amp;diff=11179"/>
		<updated>2014-12-16T01:31:14Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:SendPOSTDataDelay to HTTPC:SendPOSTDataTimeout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[HTTPC:SendPOSTDataTimeout]]&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:SendPOSTDataTimeout&amp;diff=11178</id>
		<title>HTTPC:SendPOSTDataTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:SendPOSTDataTimeout&amp;diff=11178"/>
		<updated>2014-12-16T01:31:14Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:SendPOSTDataDelay to HTTPC:SendPOSTDataTimeout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x001B0102]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Buffer size&lt;br /&gt;
|-&lt;br /&gt;
| 3-4&lt;br /&gt;
| u64 nanoseconds [[HTTPC:ReceiveDataDelay|delay]]&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (Size&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 10&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Input data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This uploads the specified raw POST data content.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:AddRequestFormEntry&amp;diff=11177</id>
		<title>HTTPC:AddRequestFormEntry</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:AddRequestFormEntry&amp;diff=11177"/>
		<updated>2014-12-16T01:30:25Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:AddRequestFormEntry to HTTPC:AddPostDataAscii&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[HTTPC:AddPostDataAscii]]&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:AddPostDataAscii&amp;diff=11176</id>
		<title>HTTPC:AddPostDataAscii</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:AddPostDataAscii&amp;diff=11176"/>
		<updated>2014-12-16T01:30:25Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:AddRequestFormEntry to HTTPC:AddPostDataAscii&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x001200C4]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Form name buffer size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Form value buffer size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| (FormNameSize&amp;lt;&amp;lt;14)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xC02&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Form name data pointer&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| (FormValueSize&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 10&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Form value data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This URL-encodes the specified &amp;quot;name=value&amp;quot; data, then adds it to the POST data which will be uploaded once the request is [[HTTPC:BeginRequest|sent]]. When using this command, [[HTTPC:AddRequestHeader]] must be used to add a &amp;quot;Content-Type: application/x-www-form-urlencoded&amp;quot; header.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:ReceiveDataTimeout&amp;diff=11175</id>
		<title>HTTPC:ReceiveDataTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:ReceiveDataTimeout&amp;diff=11175"/>
		<updated>2014-12-16T01:26:52Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x000C0102]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Buffer size&lt;br /&gt;
|-&lt;br /&gt;
| 3-4&lt;br /&gt;
| u64 nanoseconds delay, this specifies the maximum length of time to wait for the server to reply/send data before returning a time-out error&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (OutSize&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 12&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Output data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This writes the downloaded content(after the HTTP headers) to the output buffer.&lt;br /&gt;
Returns error code 0xd840a02b if the buffer is too small.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:ReceiveDataDelay&amp;diff=11174</id>
		<title>HTTPC:ReceiveDataDelay</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:ReceiveDataDelay&amp;diff=11174"/>
		<updated>2014-12-16T01:25:32Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:ReceiveDataDelay to HTTPC:ReceiveDataTimeout: More descriptive title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[HTTPC:ReceiveDataTimeout]]&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:ReceiveDataTimeout&amp;diff=11173</id>
		<title>HTTPC:ReceiveDataTimeout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:ReceiveDataTimeout&amp;diff=11173"/>
		<updated>2014-12-16T01:25:32Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: moved HTTPC:ReceiveDataDelay to HTTPC:ReceiveDataTimeout: More descriptive title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x000C0102]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Buffer size&lt;br /&gt;
|-&lt;br /&gt;
| 3-4&lt;br /&gt;
| u64 nanoseconds delay, this specifies the maximum length of time to wait for the server to reply/send data before returning a time-out error?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| (OutSize&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 12&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Output data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This writes the downloaded content(after the HTTP headers) to the output buffer.&lt;br /&gt;
Returns error code 0xd840a02b if the buffer is too small.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11172</id>
		<title>HTTP Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11172"/>
		<updated>2014-12-16T00:47:18Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* HTTP service &amp;quot;http:C&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= HTTP service &amp;quot;http:C&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;
| 0x00010044&lt;br /&gt;
| [[HTTPC:Initialize|Initialize]] ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[HTTPC:CreateContext|CreateContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[HTTPC:CloseContext|CloseContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| CancelConnection (Context)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| [[HTTPC:GetRequestState|GetRequestState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060040&lt;br /&gt;
| [[HTTPC:GetDownloadSizeState|GetDownloadSizeState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| GetRequestError&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080042&lt;br /&gt;
| [[HTTPC:InitializeConnectionSession|InitializeConnectionSession]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| [[HTTPC:BeginRequest|BeginRequest]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0040&lt;br /&gt;
| BeginRequestAsync&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0082&lt;br /&gt;
| [[HTTPC:ReceiveData|ReceiveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0102&lt;br /&gt;
| [[HTTPC:ReceiveDataDelay|ReceiveDataDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0040&lt;br /&gt;
| [[HTTPC:SetProxyDefault|SetProxyDefault]] &amp;lt;!-- proxy not default proxy --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C4&lt;br /&gt;
| SetBasicAuthorization (char *user, u32 user_size, char *pass, u32 pass_size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100080&lt;br /&gt;
| SetSocketBufferSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C4&lt;br /&gt;
| [[HTTPC:AddRequestHeader|AddRequestHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C4&lt;br /&gt;
| [[HTTPC:AddRequestFormEntry|AddRequestFormEntry]]  &amp;lt;!-- AddPostDataAscii --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x001300C4&lt;br /&gt;
| AddPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082&lt;br /&gt;
| AddPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x001600C4&lt;br /&gt;
| SendPostDataAscii&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170144&lt;br /&gt;
| SendPostDataAsciiTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001800C4&lt;br /&gt;
| SendPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190144&lt;br /&gt;
| SendPostDataBinaryTimeeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0082&lt;br /&gt;
| SendPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0102&lt;br /&gt;
| [[HTTPC:SendPOSTDataDelay|SendPOSTDataDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0080&lt;br /&gt;
| SetPostDataEncoding&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0040&lt;br /&gt;
| NofityFinishSendPostData&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E00C4&lt;br /&gt;
| [[HTTPC:GetResponseHeader|GetResponseHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0144&lt;br /&gt;
| [[HTTPC:GetResponseHeaderDelay|GetResponseHeaderDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200082&lt;br /&gt;
| [[HTTPC:GetResponseData|GetResponseData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210102&lt;br /&gt;
| GetResponseDataTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220040&lt;br /&gt;
| [[HTTPC:GetResponseStatusCode|GetResponseStatusCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002300C0&lt;br /&gt;
| [[HTTPC:GetResponseStatusCodeDelay|GetResponseStatusCodeDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240082&lt;br /&gt;
| [[HTTPC:AddTrustedRootCA|AddTrustedRootCA]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00260080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002700C4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00280080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00290080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002F0082&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00300080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00310080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00320084&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00330040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00350186&lt;br /&gt;
| SetDefaultProxy&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360000&lt;br /&gt;
| ClearDNSCache&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370080&lt;br /&gt;
| SetKeepAlive (bool)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003800C0&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00390000&lt;br /&gt;
| Finalize&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
|&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;
| 0x00400082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0041....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0042....&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:CreateContext&amp;diff=11171</id>
		<title>HTTPC:CreateContext</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:CreateContext&amp;diff=11171"/>
		<updated>2014-12-15T23:10:59Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00020082]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| URL buffer size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| u8 RequestMethod&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| (URLSize&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 10&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| URL data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== enum RequestMethod ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Memory state flags&lt;br /&gt;
!  Bit&lt;br /&gt;
|-&lt;br /&gt;
| NONE (this causes an error)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| POST &amp;lt;!-- These are a special case and different from 6/7 --&amp;gt;&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| HEAD&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| PUT &amp;lt;!-- These are a special case and different from 6/7 --&amp;gt;&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
| DELETE&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
| POST&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
| PUT&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTPC:CreateContext&amp;diff=11170</id>
		<title>HTTPC:CreateContext</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTPC:CreateContext&amp;diff=11170"/>
		<updated>2014-12-15T23:09:15Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00020082]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| URL buffer size, including null-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| u8 RequestMethod&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| (URLSize&amp;lt;&amp;lt;4)  &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 10&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| URL data pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| HTTP context handle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== enum RequestMethod ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Memory state flags&lt;br /&gt;
!  Bit&lt;br /&gt;
|-&lt;br /&gt;
| NONE (this causes an error)&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| POST &amp;lt;!-- These are a special case and different from 6/7 --&amp;gt;&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| HEAD&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| PUT &amp;lt;!-- These are a special case and different from 6/7 --&amp;gt;&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
| DELETE&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
| POST&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
| PUT&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11162</id>
		<title>HTTP Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=HTTP_Services&amp;diff=11162"/>
		<updated>2014-12-15T02:17:45Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* HTTP service &amp;quot;http:C&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= HTTP service &amp;quot;http:C&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;
| 0x00010044&lt;br /&gt;
| [[HTTPC:Initialize|Initialize]] ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[HTTPC:CreateContext|CreateContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[HTTPC:CloseContext|CloseContext]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| [[HTTPC:GetRequestState|GetRequestState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060040&lt;br /&gt;
| [[HTTPC:GetDownloadSizeState|GetDownloadSizeState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| GetRequestError&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080042&lt;br /&gt;
| [[HTTPC:InitializeConnectionSession|InitializeConnectionSession]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| [[HTTPC:BeginRequest|BeginRequest]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0040&lt;br /&gt;
| BeginRequestAsync&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0082&lt;br /&gt;
| [[HTTPC:ReceiveData|ReceiveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0102&lt;br /&gt;
| [[HTTPC:ReceiveDataDelay|ReceiveDataDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0040&lt;br /&gt;
| [[HTTPC:SetProxyDefault|SetProxyDefault]] &amp;lt;!-- proxy not default proxy --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C4&lt;br /&gt;
| SetBasicAuthorization (char *user, u32 user_size, char *pass, u32 pass_size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100080&lt;br /&gt;
| SetSocketBufferSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C4&lt;br /&gt;
| [[HTTPC:AddRequestHeader|AddRequestHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C4&lt;br /&gt;
| [[HTTPC:AddRequestFormEntry|AddRequestFormEntry]]  &amp;lt;!-- AddPostDataAscii --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x001300C4&lt;br /&gt;
| AddPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082&lt;br /&gt;
| AddPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x001600C4&lt;br /&gt;
| SendPostDataAscii&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170144&lt;br /&gt;
| SendPostDataAsciiTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001800C4&lt;br /&gt;
| SendPostDataBinary&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190144&lt;br /&gt;
| SendPostDataBinaryTimeeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0082&lt;br /&gt;
| SendPostDataRaw&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0102&lt;br /&gt;
| [[HTTPC:SendPOSTDataDelay|SendPOSTDataDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0080&lt;br /&gt;
| SetPostDataEncoding&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0040&lt;br /&gt;
| NofityFinishSendPostData&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E00C4&lt;br /&gt;
| [[HTTPC:GetResponseHeader|GetResponseHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0144&lt;br /&gt;
| [[HTTPC:GetResponseHeaderDelay|GetResponseHeaderDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200082&lt;br /&gt;
| [[HTTPC:GetResponseData|GetResponseData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210102&lt;br /&gt;
| GetResponseDataTimeout&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220040&lt;br /&gt;
| [[HTTPC:GetResponseStatusCode|GetResponseStatusCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002300C0&lt;br /&gt;
| [[HTTPC:GetResponseStatusCodeDelay|GetResponseStatusCodeDelay]] &amp;lt;!-- timeout not delay --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240082&lt;br /&gt;
| [[HTTPC:AddTrustedRootCA|AddTrustedRootCA]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00260080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002700C4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00280080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00290080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x002F0082&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00300080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00310080&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00320084&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00330040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00350186&lt;br /&gt;
| SetDefaultProxy&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360000&lt;br /&gt;
| ClearDNSCache&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370080&lt;br /&gt;
| SetKeepAlive (bool)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003800C0&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00390000&lt;br /&gt;
| Finalize&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
|&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;
| 0x00400082&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0041....&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x0042....&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Title_list&amp;diff=11151</id>
		<title>Title list</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Title_list&amp;diff=11151"/>
		<updated>2014-12-13T21:59:29Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* 0004009B - System Data Archives (Shared Archives) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Nintendo 3DS utilizes a similar title-based organization as seen in the Wii and DSi platforms. The update server is located  [http://nus.cdn.c.shop.nintendowifi.net/ccs/download/ here]. When using SSL, the update/shop servers must be accessed via SSLv3.&lt;br /&gt;
&lt;br /&gt;
The organization of Title IDs has not been documented fully yet. Region info isn&#039;t stored in title IDs however there does appear to be evidence that the regions are sequential, similar to how Wii System Menu Updates are ordered: JPN USA EUR KOR and CHN (introduced with the DSi). 3DS has one additional region: TWN.&lt;br /&gt;
&lt;br /&gt;
Note: The terms &#039;Title ID&#039;, &#039;Partition ID&#039; and &#039;Media ID&#039; are interchangeable.&lt;br /&gt;
&lt;br /&gt;
The 3DS retrieves system [[CommonETicket|tickets]] with SOAP request GetSystemCommonETicket, instead of directly downloading the cetk with HTTPS. The cetk is still accessible via HTTP, however 3DS doesn&#039;t use direct HTTP for this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TitleID Structure&#039;&#039;&#039;: 0xCCCCABCDLLLLLLRR&lt;br /&gt;
&lt;br /&gt;
* CCCC defines the console &#039;&#039;&#039;Platform&#039;&#039;&#039; (5=WiiU, 4=3DS, 3=DSi, 1=[http://wiibrew.org/wiki/Title_database Wii])&lt;br /&gt;
* ABCD defines the &#039;&#039;&#039;Content Category&#039;&#039;&#039; of the title, Demo, DLPChild, etc.&lt;br /&gt;
* LLLLLL For CTR titles, this is the title&#039;s &#039;&#039;&#039;Unique ID&#039;&#039;&#039;. For TWL converted titles this is in two sections grouped as SSLLLL. SS is the old title identification used by the DSi and is made redundant by &#039;ABCD&#039;. LLLL is the TWL title&#039;s &#039;Unique ID&#039;. There are restrictions on the Unique ID, see below for more info.&lt;br /&gt;
* RR This is the Title ID &#039;&#039;&#039;Variation&#039;&#039;&#039;, and has various uses.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content Categories&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This u16 is a collection bit mask flag. Each Category is a group of one or more bit masks.&lt;br /&gt;
&lt;br /&gt;
Specific Bitmask Flags:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Category&lt;br /&gt;
!  Bitmask&lt;br /&gt;
|-&lt;br /&gt;
|  Normal&lt;br /&gt;
|  0x0&lt;br /&gt;
|-&lt;br /&gt;
|  DlpChild&lt;br /&gt;
|  0x1&lt;br /&gt;
|-&lt;br /&gt;
|  Demo&lt;br /&gt;
|  0x2&lt;br /&gt;
|-&lt;br /&gt;
|  Contents&lt;br /&gt;
|  0x3&lt;br /&gt;
|-&lt;br /&gt;
|  AddOnContents&lt;br /&gt;
|  0x4&lt;br /&gt;
|-&lt;br /&gt;
|  Patch&lt;br /&gt;
|  0x6&lt;br /&gt;
|-&lt;br /&gt;
|  CannotExecution&lt;br /&gt;
|  0x8&lt;br /&gt;
|-&lt;br /&gt;
|  System&lt;br /&gt;
|  0x10&lt;br /&gt;
|-&lt;br /&gt;
|  RequireBatchUpdate&lt;br /&gt;
|  0x20&lt;br /&gt;
|-&lt;br /&gt;
|  NotRequireUserApproval&lt;br /&gt;
|  0x40&lt;br /&gt;
|-&lt;br /&gt;
|  NotRequireRightForMount&lt;br /&gt;
|  0x80&lt;br /&gt;
|-&lt;br /&gt;
|  CanSkipConvertJumpId&lt;br /&gt;
|  0x100&lt;br /&gt;
|-&lt;br /&gt;
|  TWL&lt;br /&gt;
|  0x8000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* TWL Category bit mask are carried over from original TWL category bitmasks (ignoring bit mask 0x8000), so TWL system titles have the bitmask of 0x8001.&lt;br /&gt;
&lt;br /&gt;
* System titles (TWL and CTR) are eligible to be updated during a System Update.&lt;br /&gt;
&lt;br /&gt;
* Bit Mask 0x4000 appears to be reserved, as it renders the &#039;&#039;TWL&#039;&#039; and &#039;&#039;System&#039;&#039; bit masks useless.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unique ID Restrictions&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
For the CTR titles, there appears to be is a correlation between Unique IDs (UID) and 3DS &#039;title types&#039;. For developer titles this is known(shown below), and retail titles *appear* to follow suite. It is unknown if this correlation is enforced on retail units, or if it is just for organisation purposes. &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 TYPE&lt;br /&gt;
!  UNIQUE ID RANGE&lt;br /&gt;
|-&lt;br /&gt;
|  System&lt;br /&gt;
|  0x0 - 0x2FF&lt;br /&gt;
|- &lt;br /&gt;
|  Application&lt;br /&gt;
|  0x300 - 0xF7FFF&lt;br /&gt;
|- &lt;br /&gt;
|  Evaluation&lt;br /&gt;
|  0xF8000 -0xFFFFF&lt;br /&gt;
|- &lt;br /&gt;
|  Prototype*&lt;br /&gt;
|  0xFF000 - 0xFF3FF&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;On the home menu, titles with UIDs within the &#039;Prototype&#039; range, appear on the home menu after install without the gift fanfare.&lt;br /&gt;
&lt;br /&gt;
ProgramID/titleID low bitmask 0xF0000000(uniqueID bitmask 0xF00000) seems to be related to which hardware the title is allowed to run on. 3DS code tends to clear this bitmask when handling programIDs. This bitmask is normally zero. When this is 0x2, this indicates that the title only runs on [[New_3DS]](that is, programID-low 0x20000000 / uniqueID 0x200000).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TitleID Variation&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This u8 allows enumeration of titles from the same category and unique ID. Common uses are explained below:&lt;br /&gt;
&lt;br /&gt;
* CTR System Titles: The 3DS has two copies of most modules/applets/archives for usage with either the NATIVE_FIRM or SAFE_MODE_FIRM. This is allowed for, by changing the title ID variation of the title to match the core version set by the FIRM it is designed to be used with:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  RR&lt;br /&gt;
!  MEANING&lt;br /&gt;
|- &lt;br /&gt;
|  02&lt;br /&gt;
|  System Title (Core version 0x2)&lt;br /&gt;
|-&lt;br /&gt;
|  03&lt;br /&gt;
|  SAFE_MODE System Title (Core version 0x3)&lt;br /&gt;
|}&lt;br /&gt;
Normally on retail SAFE_MODE ARM11 [[NCCH#CXI|CXI]] titles can&#039;t be launched, since the [[Configuration_Memory|system]] core version doesn&#039;t match the CXI exheader core version.&lt;br /&gt;
&lt;br /&gt;
* Only most non-Normal Applications are known to utilise Title ID variation, this is explained in their respective sections on this page.&lt;br /&gt;
&lt;br /&gt;
* [[3DS Development Unit Software|Dev Menu]] installs CTR Applications with a TitleID variation of 0x02 to the CTR NAND.&lt;br /&gt;
&lt;br /&gt;
* Title ID variation is ignored for TWL titles, this value is carried over from the original TWL title ID and is used for region lock:&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
v## = 0xHHHH = 0bBBBBBBBB...&lt;br /&gt;
&lt;br /&gt;
* The version major,minor and micro can be extracted from the version number by converting the 16 bit number to binary&lt;br /&gt;
* 6 bits : Major&lt;br /&gt;
* 6 bits : Minor&lt;br /&gt;
* 4 bits : Micro (&#039;Build&#039; in some contexts)&lt;br /&gt;
* i.e. v2069 (Taken from 000400DB00017302) = 0b000010 000001 0101 means that the title version is v2.1.5. For reasons unknown, the CVer build, stored in the RomFS of the title, has always been zero (at time of writing), regardless of the CVer build in the TMD. So when predicting the firmware version, this should be taken into account.&lt;br /&gt;
&lt;br /&gt;
NOTE: This Title list is a condensed version, only the System Titles lists are full lists. For a full list of titles on Nintendo&#039;s CDN, see [http://mtheall.com/~mtheall/tmdlist.php here]. The reports/title-lists from [http://yls8.mtheall.com/ninupdates/reports.php here] are automatically obtained from the system update SOAP.&lt;br /&gt;
&lt;br /&gt;
== CTR System Titles ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  System Category&lt;br /&gt;
!  Bit Mask(s)&lt;br /&gt;
!  Category Bit Mask&lt;br /&gt;
|-&lt;br /&gt;
|  Application (SYSTEM_APPLICATION)&lt;br /&gt;
|  Normal&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;System&lt;br /&gt;
|  0x0010&lt;br /&gt;
|-&lt;br /&gt;
|  System Data Archives (SYSTEM_CONTENT)&lt;br /&gt;
|  Contents&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;CannotExecution&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;System&lt;br /&gt;
|  0x001B&lt;br /&gt;
|-&lt;br /&gt;
|  Shared Data Archives (SHARED_CONTENT)&lt;br /&gt;
|  Contents&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;CannotExecution&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;System&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;NotRequireRightForMount&lt;br /&gt;
|  0x009B&lt;br /&gt;
|-&lt;br /&gt;
|  System Data Archives (AUTO_UPDATE_CONTENT)&lt;br /&gt;
|  Contents&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;CannotExecution&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;System&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;NotRequireUserApproval&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;NotRequireRightForMount&lt;br /&gt;
|  0x00DB&lt;br /&gt;
|-&lt;br /&gt;
|  Applet (APPLET)&lt;br /&gt;
|  Normal&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;System&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;RequireBatchUpdate&lt;br /&gt;
|  0x0030&lt;br /&gt;
|-&lt;br /&gt;
|  Module (BASE)&lt;br /&gt;
|  Normal&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;System&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;RequireBatchUpdate&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;CanSkipConvertJumpId&lt;br /&gt;
|  0x0130&lt;br /&gt;
|-&lt;br /&gt;
|  Firmware (FIRMWARE)&lt;br /&gt;
|  Normal&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;CannotExecution&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;System&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;RequireBatchUpdate&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;CanSkipConvertJumpId&lt;br /&gt;
|  0x0138&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00040010 - System Applications ===&lt;br /&gt;
The versions for CHN, KOR, and TWN are separate from the other regions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  JPN TIDLow&lt;br /&gt;
!  USA TIDLow&lt;br /&gt;
!  EUR TIDLow&lt;br /&gt;
!  CHN TIDLow&lt;br /&gt;
!  KOR TIDLow&lt;br /&gt;
!  TWN TIDLow&lt;br /&gt;
!  Description&lt;br /&gt;
!  JPN Versions&lt;br /&gt;
!  EUR Versions&lt;br /&gt;
!  USA Versions&lt;br /&gt;
!  CHN Versions&lt;br /&gt;
!  KOR Versions&lt;br /&gt;
!  TWN Versions&lt;br /&gt;
!  Status&lt;br /&gt;
|-&lt;br /&gt;
| 00020000&lt;br /&gt;
| 00021000&lt;br /&gt;
| 00022000&lt;br /&gt;
| 00026000&lt;br /&gt;
| 00027000&lt;br /&gt;
| 00028000&lt;br /&gt;
| [[System Settings]] (mset)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[3.0.0-5|v2060]], [[4.0.0-7|v3074]], [[5.0.0-11|v4097]], [[6.0.0-11|v5127]], [[7.0.0-13|v6157]], [[7.2.0-17|v7173]], [[8.1.0-0_New3DS|v8198]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v9224]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[3.0.0-5|v2061]], [[4.0.0-7|v3075]], [[5.0.0-11|v4097]], [[6.0.0-11|v5127]], [[7.0.0-13|v6157]], [[7.2.0-17|v7174]], [[9.0.0-20|v8203]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[3.0.0-5|v2062]], [[4.0.0-7|v3078]], [[5.0.0-11|v4098]], [[6.0.0-11|v5128]], [[7.0.0-13|v6157]], [[7.2.0-17|v7174]], [[9.0.0-20|v8202]]&lt;br /&gt;
| [[4.0.0-7|v8]], [[4.4.0-10|v1024]](CHN-only sysupdate for just mset), [[5.0.0-11|v2049]], [[7.0.0-13|v3075]]&lt;br /&gt;
| [[4.0.0-7|v1026]], [[5.0.0-11|v2049]], [[7.0.0-13|v4098]]&lt;br /&gt;
| [[4.1.0-8|v8]], [[4.2.0-9|v1024]], [[5.0.0-11|v2050]], [[7.0.0-13|v3074]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020100&lt;br /&gt;
| 00021100&lt;br /&gt;
| 00022100&lt;br /&gt;
| 00026100&lt;br /&gt;
| 00027100&lt;br /&gt;
| 00028100&lt;br /&gt;
| [[Download Play]] (dlplay)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[4.0.0-7|v2051]], [[9.0.0-20|v3072]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[4.0.0-7|v2051]], [[9.0.0-20|v3073]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[4.0.0-7|v2051]], [[9.0.0-20|v3073]]&lt;br /&gt;
| [[4.0.0-7|v4]]&lt;br /&gt;
| [[4.0.0-7|v1027]]&lt;br /&gt;
| [[4.1.0-8|v4]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020200&lt;br /&gt;
| 00021200&lt;br /&gt;
| 00022200&lt;br /&gt;
| 00026200&lt;br /&gt;
| 00027200&lt;br /&gt;
| 00028200&lt;br /&gt;
| [[Activity Log]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2051]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2054]], [[7.0.0-13|v2064]]&lt;br /&gt;
| Same as EUR&lt;br /&gt;
| [[4.0.0-7|v3]]&lt;br /&gt;
| [[4.0.0-7|v2]], [[7.0.0-13|v16]]&lt;br /&gt;
| [[4.1.0-8|v2]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020300&lt;br /&gt;
| 00021300&lt;br /&gt;
| 00022300&lt;br /&gt;
| 00026300&lt;br /&gt;
| 00027300&lt;br /&gt;
| 00028300&lt;br /&gt;
| [[Health and Safety Information]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[4.0.0-7|v1024]], [[6.0.0-11|v2050]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[4.0.0-7|v2050]], [[6.0.0-11|v3077]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[4.0.0-7|v1026]], [[6.1.0-12U|v2051]]&lt;br /&gt;
| [[4.0.0-7|v5]]&lt;br /&gt;
| [[4.0.0-7|v2]]&lt;br /&gt;
| [[4.1.0-8|v5]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 20020300&lt;br /&gt;
| 20021300&lt;br /&gt;
| 20022300&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]] [[Health and Safety Information]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v2]], [[9.3.0-21|v17]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v1]]&lt;br /&gt;
| Same as EUR.&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020400&lt;br /&gt;
| 00021400&lt;br /&gt;
| 00022400&lt;br /&gt;
| 00026400&lt;br /&gt;
| 00027400&lt;br /&gt;
| 00028400&lt;br /&gt;
| [[Nintendo 3DS Camera]] (CtrApp)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v16]], [[3.0.0-5|v1038]], [[4.0.0-7|v2048]], [[6.0.0-11|v3073]], [[9.0.0-20|v4097]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v16]], [[3.0.0-5|v1039]], [[4.0.0-7|v2048]], [[6.0.0-11|v3073]], [[7.0.0-13|v3088]], [[9.0.0-20|v4097]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v16]], [[3.0.0-5|v1039]], [[4.0.0-7|v2048]], [[6.1.0-12U|v3074]], [[7.0.0-13|v3088]], [[9.0.0-20|v4097]]&lt;br /&gt;
| [[4.0.0-7|v3]]&lt;br /&gt;
| [[4.0.0-7|v2]], [[7.0.0-13|v1040]]&lt;br /&gt;
| [[4.1.0-8|v3]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020500&lt;br /&gt;
| 00021500&lt;br /&gt;
| 00022500&lt;br /&gt;
| 00026500&lt;br /&gt;
| 00027500&lt;br /&gt;
| 00028500&lt;br /&gt;
| [[Nintendo 3DS Sound]] (CtrApp)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[7.0.0-13|v3089]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[7.0.0-13|v3088]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[7.0.0-13|v3088]]&lt;br /&gt;
| [[4.0.0-7|v2]]&lt;br /&gt;
| [[4.0.0-7|v2]], [[7.0.0-13|v16]]&lt;br /&gt;
| [[4.1.0-8|v3]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020700&lt;br /&gt;
| 00021700&lt;br /&gt;
| 00022700&lt;br /&gt;
| 00026700&lt;br /&gt;
| 00027700&lt;br /&gt;
| 00028700&lt;br /&gt;
| [[Mii Maker]] (EDIT)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[7.0.0-13|v2055]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| [[4.0.0-7|v1]]&lt;br /&gt;
| [[4.0.0-7|v1]], [[7.0.0-13|v16]]&lt;br /&gt;
| [[4.1.0-8|v2]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020800&lt;br /&gt;
| 00021800&lt;br /&gt;
| 00022800&lt;br /&gt;
| 00026800&lt;br /&gt;
| 00027800&lt;br /&gt;
| 00028800&lt;br /&gt;
| [[StreetPass Mii Plaza]] (MEET)&lt;br /&gt;
| [[1.0.0-0|v0]], v1027, [[2.1.0-4|v2048]], [[3.0.0-5|v3087]], [[3.0.0-6|v4096]], [[6.0.0-11|v5121]]&lt;br /&gt;
| [[1.0.0-0|v0]], v1027, [[2.1.0-4|v2048]], [[3.0.0-5|v3087]], [[3.0.0-6|v4096]], [[6.0.0-11|v5122]]&lt;br /&gt;
| [[1.0.0-0|v0]], v1027, [[2.1.0-4|v2048]], [[3.0.0-5|v3087]], [[3.0.0-6|v4096]], [[6.1.0-12U|v5124]], [[7.0.0-13|v5136]]&lt;br /&gt;
| [[4.0.0-7|v0]], [[4.4.0-10|v4096]]&lt;br /&gt;
| [[4.0.0-7|v1]], [[4.4.0-10|v4096]], [[7.0.0-13|v5120]]&lt;br /&gt;
| [[4.1.0-8|v1]], [[4.4.0-10|v4096]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020900&lt;br /&gt;
| 00021900&lt;br /&gt;
| 00022900&lt;br /&gt;
| N/A&lt;br /&gt;
| 00027900&lt;br /&gt;
| 00028900&lt;br /&gt;
| [[eShop]] (tiger)&lt;br /&gt;
| [[2.0.0-2|v4]], [[2.1.0-3|v1026]], [[3.0.0-5|v2057]], [[4.0.0-7|v3081]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7169]], [[7.0.0-13|v8206]], [[7.1.0-14|v9231]], [[7.2.0-17|v10245]], [[8.0.0-18|v11265]], [[8.1.0-19|v12288]], [[9.0.0-20|v13320]], [[9.3.0-21|v15366]]&lt;br /&gt;
| [[2.0.0-2|v4]], [[2.1.0-3|v1026]], [[3.0.0-5|v2058]], [[4.0.0-7|v3081]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7171]], [[7.0.0-13|v8206]], [[7.1.0-14|v9231]], [[7.2.0-17|v10245]], [[8.0.0-18|v11265]], [[8.1.0-19|v12288]], [[9.0.0-20|v13321]], [[9.3.0-21|v15366]]&lt;br /&gt;
| [[2.0.0-2|v4]], [[2.1.0-3|v1026]], [[3.0.0-5|v2058]], [[4.0.0-7|v3081]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7170]], [[7.0.0-13|v8206]], [[7.1.0-14|v9231]], [[7.2.0-17|v10246]], [[8.0.0-18|v11265]], [[8.1.0-19|v12288]], [[9.0.0-20|v13320]], [[9.3.0-21|v15366]]&lt;br /&gt;
| N/A&lt;br /&gt;
| [[4.0.0-7|v3082]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7169]], [[7.0.0-13|v8205]], [[7.1.0-14|v9231]], [[8.1.0-19|v12288]], [[9.0.0-20|v13320]], [[9.3.0-21|v15366]]&lt;br /&gt;
| [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7170]], [[7.0.0-13|v8205]], [[7.1.0-14|v9231]], [[8.1.0-19|v12288]], [[9.3.0-21|v15366]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020A00&lt;br /&gt;
| 00021A00&lt;br /&gt;
| 00022A00&lt;br /&gt;
| N/A&lt;br /&gt;
| 00027A00&lt;br /&gt;
| 00028A00&lt;br /&gt;
| [[System Transfer]] (CARDBOAR)&lt;br /&gt;
| [[2.0.0-2|v4]], [[3.0.0-5|v1035]], [[4.0.0-7|v2050]], [[5.0.0-11|v3074]], [[7.0.0-13|v4109]], [[9.0.0-20|v5130]]&lt;br /&gt;
| [[2.0.0-2|v4]], [[3.0.0-5|v1035]], [[4.0.0-7|v2050]], [[5.0.0-11|v3073]], [[7.0.0-13|v4109]], [[9.0.0-20|v5131]]&lt;br /&gt;
| [[2.0.0-2|v4]], [[3.0.0-5|v1035]], [[4.0.0-7|v2051]], [[5.0.0-11|v3073]], [[7.0.0-13|v4109]], [[9.0.0-20|v5131]]&lt;br /&gt;
| N/A&lt;br /&gt;
| [[4.0.0-7|v2]], [[5.0.0-11|v1025]], [[7.0.0-13|v2061]], [[9.0.0-20|v3082]]&lt;br /&gt;
| [[4.1.0-8|v2]], [[5.0.0-11|v1025]], [[7.0.0-13|v2061]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020B00&lt;br /&gt;
| 00021B00&lt;br /&gt;
| 00022B00&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Nintendo Zone]] (&amp;quot;Nintendo&amp;quot;)&lt;br /&gt;
| [[1.0.0-0|v0]], [[3.0.0-5|v1034]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020D00&lt;br /&gt;
| 00021D00&lt;br /&gt;
| 00022D00&lt;br /&gt;
| 00026D00&lt;br /&gt;
| 00027D00&lt;br /&gt;
| 00028D00&lt;br /&gt;
| [[Face Raiders]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1028]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1028]], [[7.0.0-13|v1040]]&lt;br /&gt;
| Same as EUR&lt;br /&gt;
| [[4.0.0-7|v0]]&lt;br /&gt;
| [[4.0.0-7|v0]]&lt;br /&gt;
| [[4.1.0-8|v2]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 20020D00&lt;br /&gt;
| 20021D00&lt;br /&gt;
| 20022D00&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]] [[Face Raiders]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v2050]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v2049]]&lt;br /&gt;
| Same as EUR.&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020E00&lt;br /&gt;
| 00021E00&lt;br /&gt;
| 00022E00&lt;br /&gt;
| 00026E00&lt;br /&gt;
| 00027E00&lt;br /&gt;
| 00028E00&lt;br /&gt;
| [[AR Games]] (AR_ACT)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[7.0.0-13|v1040]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[7.0.0-13|v1040]]&lt;br /&gt;
| [[4.0.0-7|v0]]&lt;br /&gt;
| [[4.0.0-7|v0]], [[7.0.0-13|v16]]&lt;br /&gt;
| [[4.1.0-8|v1]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00020F00&lt;br /&gt;
| 00021F00&lt;br /&gt;
| 00022F00&lt;br /&gt;
| 00026F00&lt;br /&gt;
| 00027F00&lt;br /&gt;
| 00028F00&lt;br /&gt;
| SAFE_MODE [[System Settings#System Updater|System Updater]] (mset)&lt;br /&gt;
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[6.0.0-11|v2049]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[6.0.0-11|v2050]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| [[4.0.0-7|v1]], [[6.0.0-11|v1026]]&lt;br /&gt;
| [[4.0.0-7|v1]]&lt;br /&gt;
| [[4.1.0-8|v1]]&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 00023000&lt;br /&gt;
| 00024000&lt;br /&gt;
| 00025000&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Promotional video&lt;br /&gt;
| [[1.1.0-1|v2]], [[2.0.0-2|v2048]]&lt;br /&gt;
| [[1.1.0-1|v&amp;lt;unknown&amp;gt;]], [[2.0.0-2|v2048]]&lt;br /&gt;
| [[1.1.0-1|v0]], [[2.0.0-2|v2048]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 0002BF00&lt;br /&gt;
| 0002C000&lt;br /&gt;
| 0002C100&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Nintendo Network ID Settings (act)&lt;br /&gt;
| [[7.0.0-13|v14]], [[7.2.0-17|v1029]], [[9.0.0-20|v2051]], [[9.3.0-21|v3072]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Active&lt;br /&gt;
|-&lt;br /&gt;
| 20023100&lt;br /&gt;
| 20024100&lt;br /&gt;
| 20025100&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[microSD Management]] (&#039;mcopy&#039;) ([[New_3DS]]-only)&lt;br /&gt;
| [[8.1.0-0_New3DS|v8]], [[9.0.0-20|v1024]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v4]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v5]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Available&lt;br /&gt;
|-&lt;br /&gt;
| 2002C800&lt;br /&gt;
| 2002CF00&lt;br /&gt;
| 2002D000&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is &amp;quot;menu&amp;quot;.&lt;br /&gt;
| [[8.1.0-0_New3DS|v2]], [[9.0.0-20|v18]], [[9.3.0-21|v34]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v1]], [[9.3.0-21|v17]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v1]], [[9.3.0-21|v18]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 2002C900&lt;br /&gt;
| 2002D100&lt;br /&gt;
| 2002D200&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is &amp;quot;friend&amp;quot;.&lt;br /&gt;
| [[8.1.0-0_New3DS|v1]]&lt;br /&gt;
| Same as JPN.&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]], [[9.3.0-21|v16]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 2002CA00&lt;br /&gt;
| 2002D300&lt;br /&gt;
| 2002D400&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is &amp;quot;newslist&amp;quot;.&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]], v1([[Home_Menu|JPN-only]] Oct 2, 2014 &amp;quot;sysupdate&amp;quot;, actually uploaded on 09-29-14. Identical to v0, same TMDs besides title-versions)&lt;br /&gt;
| [[8.1.0-0_New3DS|v2]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Stubbed&lt;br /&gt;
|-&lt;br /&gt;
| 2002CB00&lt;br /&gt;
| 2002D500&lt;br /&gt;
| 2002D600&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is &amp;quot;cherry&amp;quot;.&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v1]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v2]]&lt;br /&gt;
| Same as EUR.&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Stubbed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;act&amp;quot; application seems to use a web browser with webkit?&lt;br /&gt;
&lt;br /&gt;
Regardless of version, the ExeFS:/.code for mset is the same for USA/EUR/JPN. The [[4.0.0-7]] version of mset([[4.1.0-8]] for TWN) has the same ExeFS:/.code for all regions(JPN, USA, EUR, CHN, KOR, TWN). The [[5.0.0-11]] mset ExeFS:/.code is the same for all regions as well, except for CHN. The [[7.0.0-13]] mset ExeFS:/.code is unique for the following regions: CHN, KOR, and TWN.&lt;br /&gt;
&lt;br /&gt;
=== 0004001B - [[NCCH#CFA|System Data Archives]] ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TitleID Low&lt;br /&gt;
!  Description&lt;br /&gt;
!  Versions&lt;br /&gt;
|-&lt;br /&gt;
| 00010002&lt;br /&gt;
| [[ClCertA]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 00010702&lt;br /&gt;
| [[NS CFA]]&lt;br /&gt;
| [[3.0.0-5|v0]], [[6.0.0-11|v1028]], [[6.3.0-12|v2048]], [[7.0.0-13|v3073]], [[9.0.0-20|v4096]](also for [[8.1.0-0_New3DS]])&lt;br /&gt;
|-&lt;br /&gt;
| 00010802&lt;br /&gt;
| This CFA only contains a 1-byte &amp;quot;dummy.txt&amp;quot; in the RomFS, which contains &#039;0&#039;.&lt;br /&gt;
| [[6.3.0-12|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 00018002&lt;br /&gt;
| Same contents as 00010802. Starting with [[7.1.0-15]], the &amp;quot;dummy.txt&amp;quot; file was removed from RomFS: this CFA RomFS now contains web-browser data(similar to 00018102) for NNID / networking, etc.&lt;br /&gt;
| [[7.0.0-13|v14]], [[7.1.0-15|v1025]], [[7.2.0-17|v2055]], [[9.0.0-20|v3078]], [[9.3.0-21|v4096]]&lt;br /&gt;
|-&lt;br /&gt;
| 00018102&lt;br /&gt;
| This contains local web-browser data(html/js, gfx, etc) for the Miiverse Offline-mode.&lt;br /&gt;
| [[7.0.0-13|v11]], [[9.0.0-20|v1025]](also for [[8.1.0-0_New3DS]])&lt;br /&gt;
|-&lt;br /&gt;
| 00018202&lt;br /&gt;
| This contains the webkit/OSS [[CRO0|CROs]] used with the Miiverse applet and the &amp;quot;act&amp;quot; application.&lt;br /&gt;
| [[7.0.0-13|v7]], [[8.1.0-0_New3DS|v1026]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v2050]]&lt;br /&gt;
|-&lt;br /&gt;
| 00019002&lt;br /&gt;
| [[Fangate_updater]]&lt;br /&gt;
| [[9.3.0-21|v2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00040030 - Applets===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  JPN TitleIDLow&lt;br /&gt;
!  USA TitleIDLow&lt;br /&gt;
!  EUR TitleIDLow&lt;br /&gt;
!  Description&lt;br /&gt;
!  JPN Versions&lt;br /&gt;
!  USA Versions&lt;br /&gt;
!  EUR Versions&lt;br /&gt;
|-&lt;br /&gt;
| 00008102&lt;br /&gt;
| 00008102&lt;br /&gt;
| 00008102&lt;br /&gt;
| [[NS#Alternate menu|Alternate menu]]&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00008202&lt;br /&gt;
| 00008F02&lt;br /&gt;
| 00009802&lt;br /&gt;
| [[Home Menu|SYSMENU]] (menu)&lt;br /&gt;
| v0, v1029, v2049, [[2.2.0-X|v3075]], v4111, v5131, [[4.2.0-9|v6146]], [[5.0.0-11|v7172]], [[6.0.0-11|v8198]], [[7.0.0-13|v9230]], [[8.1.0-0_New3DS|v10250]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v11272]], [[9.1.0-20J|v14336]], [[9.2.0-20|v15360]], [[9.3.0-21|v16402]], [[9.4.0-21|v17408]]&lt;br /&gt;
| v0, v1029, v2049, [[2.2.0-X|v3075]], v4111, v5131, [[4.2.0-9|v6146]], [[5.0.0-11|v7172]], [[6.0.0-11|v8198]], [[7.0.0-13|v9230]], [[8.1.0-0_New3DS|v10250]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v11272]], [[9.2.0-20|v12288]], [[9.3.0-21|v13330]], [[9.4.0-21|v14336]]&lt;br /&gt;
| v0, v1029, v2049, [[2.2.0-X|v3075]], v4111, v5131, [[4.2.0-9|v6146]], [[5.0.0-11|v7172]], [[6.0.0-11|v8198]], [[7.0.0-13|v9230]], [[8.1.0-0_New3DS|v10250]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v11272]], [[9.2.0-20|v12288]], [[9.3.0-21|v13330]], [[9.4.0-21|v14336]]&lt;br /&gt;
|-&lt;br /&gt;
| 00008402&lt;br /&gt;
| 00009002&lt;br /&gt;
| 00009902&lt;br /&gt;
| Camera applet used by Home-menu (CtrApp)&lt;br /&gt;
| v0, v1036, [[9.0.0-20|v2049]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008502&lt;br /&gt;
| 00009102&lt;br /&gt;
| 00009A02&lt;br /&gt;
| Not available on CDN&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00008602&lt;br /&gt;
| 00009202&lt;br /&gt;
| 00009B02&lt;br /&gt;
| Instruction Manual, applet for displaying instruction manuals&lt;br /&gt;
| v0, v1026, v2048, v3072, [[5.0.0-11|v4097]], [[9.0.0-20|v5120]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008702&lt;br /&gt;
| 00009302&lt;br /&gt;
| 00009C02&lt;br /&gt;
| Game Notes (Cherry)&lt;br /&gt;
| v0, v1026, v2049, [[5.0.0-11|v3073]], [[9.0.0-20|v4096]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008802&lt;br /&gt;
| 00009402&lt;br /&gt;
| 00009D02&lt;br /&gt;
| [[Internet Browser]] (spider)&lt;br /&gt;
| [[2.0.0-2|v6]], [[2.1.0-4|v1024]], [[4.0.0-7|v2050]], [[5.0.0-11|v3074 (EUR)/v3075(USA,JAP)]], [[7.0.0-13|v3088]], [[7.1.0-16|v4096]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 20008802&lt;br /&gt;
| 20009402&lt;br /&gt;
| 20009D02&lt;br /&gt;
| [[New_3DS]] [[Internet Browser]] (SKATER)&lt;br /&gt;
| [[8.1.0-0_New3DS|v10]], [[9.3.0-21|v1027]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008A02&lt;br /&gt;
| 00008A02&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp]]&lt;br /&gt;
| v0, v1025, [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008A03&lt;br /&gt;
| 00008A03&lt;br /&gt;
| 00008A03&lt;br /&gt;
| SAFE_MODE [[ErrDisp]]&lt;br /&gt;
| v0&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 20008A03&lt;br /&gt;
| 20008A03&lt;br /&gt;
| 20008A03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[ErrDisp]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008D02&lt;br /&gt;
| 00009602&lt;br /&gt;
| 00009F02&lt;br /&gt;
| Friend List (friend)&lt;br /&gt;
| v0, v1026, [[2.2.0-X|v2051]], v3082, v4099, [[7.0.0-13|v5120]], [[9.0.0-20|v6144]](Also for [[8.1.0-0_New3DS]]) (EUR v6, v1024, v3082, v4099, [[7.0.0-13|v5120]], [[9.0.0-20|v6144]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008E02&lt;br /&gt;
| 00009702&lt;br /&gt;
| 0000A002&lt;br /&gt;
| Notifications (newslist)&lt;br /&gt;
| v0, v1029, v2054, v3075, [[9.0.0-20|v4097]] (EUR v6, v1024, v2054, v3075, [[9.0.0-20|v4097]]) (JPN: ..., [[8.1.0-0_New3DS|v4096]], [[9.0.0-20|v5121]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C002&lt;br /&gt;
| 0000C802&lt;br /&gt;
| 0000D002&lt;br /&gt;
| Software Keyboard (swkbd)&lt;br /&gt;
| v0, v1026, v2053, [[7.0.0-13|v3072]], [[9.0.0-20|v4096]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C003&lt;br /&gt;
| 0000C803&lt;br /&gt;
| 0000D003&lt;br /&gt;
| SAFE_MODE Software Keyboard (swkbd)&lt;br /&gt;
| v0&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 2000C003&lt;br /&gt;
| 2000C803&lt;br /&gt;
| 2000D003&lt;br /&gt;
| [[New_3DS]] SAFE_MODE Software Keyboard (swkbd)&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]](for JPN this is v1024)&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C102&lt;br /&gt;
| 0000C902&lt;br /&gt;
| 0000D102&lt;br /&gt;
| appletEd&lt;br /&gt;
| v0, v1026, [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v3077]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C302&lt;br /&gt;
| 0000CB02&lt;br /&gt;
| 0000D302&lt;br /&gt;
| PNOTE_AP (Photo file selector applet, for SD-card/etc?)&lt;br /&gt;
| v0, v1024, [[8.1.0-0_New3DS|v2049]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v3075]], [[9.3.0-21|v4096]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C402&lt;br /&gt;
| 0000CC02&lt;br /&gt;
| 0000D402&lt;br /&gt;
| SNOTE_AP (Sound file selector applet, for SD-card/etc?)&lt;br /&gt;
| v0, v3, [[8.0.0-18|v1026]], [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C502&lt;br /&gt;
| 0000C502&lt;br /&gt;
| 0000C502&lt;br /&gt;
| error (This applet displays networking errors, etc)&lt;br /&gt;
| v0, v1026, v2053, v3074, [[8.1.0-0_New3DS|v4096]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v5128]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C503&lt;br /&gt;
| 0000C503&lt;br /&gt;
| 0000C503&lt;br /&gt;
| SAFE_MODE error applet&lt;br /&gt;
| v0&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 2000C503&lt;br /&gt;
| 2000C503&lt;br /&gt;
| 2000C503&lt;br /&gt;
| [[New_3DS]] SAFE_MODE error applet&lt;br /&gt;
| [[8.1.0-0_New3DS|v1024]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000CD02&lt;br /&gt;
| 0000CD02&lt;br /&gt;
| 0000CD02&lt;br /&gt;
| extrapad ([[Circle Pad Pro]] calibration applet)&lt;br /&gt;
| v1, v1026, [[8.1.0-0_New3DS|v2048]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v3073]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000C602&lt;br /&gt;
| 0000CE02&lt;br /&gt;
| 0000D602&lt;br /&gt;
| mint. eShop applet, used by applications for accessing the eShop, for DLC/etc. Also used by the eShop application itself.&lt;br /&gt;
| v5, v1028, [[4.2.0-9|v2050]], [[5.0.0-11|v3072]], [[7.0.0-13|v4109]], [[7.2.0-17|v5125]](v5123 for JPN), [[8.0.0-18|v6145]], [[8.1.0-0_New3DS|v7168]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v8200]], [[9.3.0-21|v9224]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000BC02&lt;br /&gt;
| 0000BD02&lt;br /&gt;
| 0000BE02&lt;br /&gt;
| olv (Miiverse applet)&lt;br /&gt;
| [[7.0.0-13|v14]], [[7.2.0-17|v1024]], [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v3072]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 0000F602&lt;br /&gt;
| 0000F602&lt;br /&gt;
| 0000F602&lt;br /&gt;
| memolib (Uses Miiverse, likely the &amp;quot;system library&amp;quot; for Miiverse)&lt;br /&gt;
| [[7.0.0-13|v5]], [[8.1.0-0_New3DS|v1024]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v2050]], [[9.3.0-21|v3072]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008302&lt;br /&gt;
| 00008B02&lt;br /&gt;
| 0000BA02&lt;br /&gt;
| solv3 (Miiverse-posting applet)&lt;br /&gt;
| [[9.0.0-20|v6]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00009502&lt;br /&gt;
| 00009E02&lt;br /&gt;
| 0000B902&lt;br /&gt;
| Cabinet ([[amiibo Settings]])&lt;br /&gt;
| [[9.3.0-21|v7]]&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Most of these processes are applets. There can only be one application here(Home Menu, Internet Browser, Friend-List, etc) with programID-high 00040030 running at a time. When directly launching one of these 00040030 applications with Home Menu, the Home Menu process will terminate once the process is launched. When returning to Home Menu from that launched process, the Home Menu process is launched again.&lt;br /&gt;
&lt;br /&gt;
All of the above processes use the &amp;quot;SYSTEM&amp;quot; [[SVC|memory-region]].&lt;br /&gt;
&lt;br /&gt;
The ExeFS for Home Menu is exactly the same for USA/EUR/JPN.&lt;br /&gt;
&lt;br /&gt;
The Miiverse applet seems to use a web browser with webkit.&lt;br /&gt;
&lt;br /&gt;
=== 0004009B - [[NCCH#CFA|System Data Archives]] (Shared Archives) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  JPN TitleIDLow&lt;br /&gt;
!  USA TitleIDLow&lt;br /&gt;
!  EUR TitleIDLow&lt;br /&gt;
!  Description&lt;br /&gt;
!  Versions&lt;br /&gt;
|-&lt;br /&gt;
| 00010202&lt;br /&gt;
| 00010202&lt;br /&gt;
| 00010202&lt;br /&gt;
| Probably Mii-related, contains &amp;quot;CFL_Res.dat&amp;quot; in the RomFS.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 00010302&lt;br /&gt;
| 00010302&lt;br /&gt;
| 00010302&lt;br /&gt;
| Doesn&#039;t exist on CDN?&lt;br /&gt;
| v0, v2052&lt;br /&gt;
|-&lt;br /&gt;
| 00010402&lt;br /&gt;
| 00010402&lt;br /&gt;
| 00010402&lt;br /&gt;
| Mounted as &amp;quot;area:&amp;quot;, contains Country and Region names&lt;br /&gt;
| v0, v1024, v2050, v3072, [[7.0.0-13|v4098]]&lt;br /&gt;
|-&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| Doesn&#039;t exist on CDN?&lt;br /&gt;
| v0, v1024, v2048&lt;br /&gt;
|-&lt;br /&gt;
| 00010602&lt;br /&gt;
| 00010602&lt;br /&gt;
| 00010602&lt;br /&gt;
| Non-Nintendo TLS Root-CA Certificates (RomFS contains files with filename &amp;quot;CACERT_PUBLIC_CA_&amp;lt;val&amp;gt;.der&amp;quot;, where &amp;lt;val&amp;gt; is 5..8)&lt;br /&gt;
| v2&lt;br /&gt;
|-&lt;br /&gt;
| 00011902&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00011402&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00011602&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00011D02&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00011E02&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011202&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011302&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011502&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011702&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011802&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 00011902&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011B02&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011C02&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00011D02&lt;br /&gt;
| ?&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00012102&lt;br /&gt;
| ?&lt;br /&gt;
| v0, v1026, v2051, v3074&lt;br /&gt;
|-&lt;br /&gt;
| 00012202&lt;br /&gt;
| 00012302&lt;br /&gt;
| 00012102&lt;br /&gt;
| ?contains a lists with error strings&lt;br /&gt;
| v1026, v2053, v3073, [[4.2.0-9|v4096]], [[5.0.0-11|v5120]], [[7.0.0-13|v6149]], [[7.2.0-17|v7168]], [[8.0.0-18|v8192]], [[9.0.0-20|v9218]], [[9.3.0-21|v10242]]&lt;br /&gt;
|-&lt;br /&gt;
| 00013202&lt;br /&gt;
| 00013302&lt;br /&gt;
| 00013102&lt;br /&gt;
| Mounted as &amp;quot;eula:&amp;quot;&lt;br /&gt;
| v0, v1024, v2049 USA: v1024, v2051, [[7.0.0-13|v3074]], [[7.2.0-17|v4100]](EUR-only), [[9.0.0-20|v4099]]&lt;br /&gt;
|-&lt;br /&gt;
| 00014002&lt;br /&gt;
| 00014002&lt;br /&gt;
| 00014002&lt;br /&gt;
| JPN/EUR/USA System Font (&amp;quot;font:&amp;quot;)&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 00014102&lt;br /&gt;
| 00014102&lt;br /&gt;
| 00014102&lt;br /&gt;
| CHN System Font (&amp;quot;font:&amp;quot;)&lt;br /&gt;
| v0, v1024&lt;br /&gt;
|-&lt;br /&gt;
| 00014202&lt;br /&gt;
| 00014202&lt;br /&gt;
| 00014202&lt;br /&gt;
| KOR System Font (&amp;quot;font:&amp;quot;)&lt;br /&gt;
| v0, v1024&lt;br /&gt;
|-&lt;br /&gt;
| 00014302&lt;br /&gt;
| 00014302&lt;br /&gt;
| 00014302&lt;br /&gt;
| TWN System Font (&amp;quot;font:&amp;quot;)&lt;br /&gt;
| v0, v1024&lt;br /&gt;
|-&lt;br /&gt;
| 00015202&lt;br /&gt;
| 00015302&lt;br /&gt;
| 00015102&lt;br /&gt;
| Mounted as &amp;quot;rate:&amp;quot;&lt;br /&gt;
| v0 (EUR: v0, v1024)&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00016302&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v80&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00017302&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| v3088&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 000400DB - [[NCCH#CFA|System Data Archives]] ===&lt;br /&gt;
These [[NVer]] titleIDs can be found @ offset 0x320 in every [[CCI]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  EUR TitleIDLow&lt;br /&gt;
!  JPN TitleIDLow&lt;br /&gt;
!  USA TitleIDLow&lt;br /&gt;
!  CHN TitleIDLow&lt;br /&gt;
!  KOR TitleIDLow&lt;br /&gt;
!  TWN TitleIDLow&lt;br /&gt;
!  Description&lt;br /&gt;
!  USA/EUR/JPN Versions&lt;br /&gt;
!  CHN Versions&lt;br /&gt;
!  TWN Versions&lt;br /&gt;
!  KOR Versions&lt;br /&gt;
|-&lt;br /&gt;
| 00010302&lt;br /&gt;
| 00010302&lt;br /&gt;
| 00010302&lt;br /&gt;
| 00010302&lt;br /&gt;
| 00010302&lt;br /&gt;
| 00010302&lt;br /&gt;
| NGWord bad word list&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[3.0.0-5|v2052]], [[4.0.0-7|v3072]], [[4.3.0-10|v4096]], [[5.0.0-11|v5120]], [[9.0.0-20|v6144]], [[9.3.0-21|v7168]]&lt;br /&gt;
| Same as USA&lt;br /&gt;
| Same as USA&lt;br /&gt;
| Same as USA&lt;br /&gt;
|-&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| [[Nintendo Zone]] hotspot list&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[3.0.0-5|v2048]], [[4.0.0-7|v3073]], [[4.3.0-10|v4096]], [[4.4.0-10|v5120]], [[4.5.0-10|v6144]], [[5.0.0-11|v7169]], [[6.0.0-11|v8192]], [[6.2.0-12|v9216]], [[7.0.0-13|v10242]], [[7.2.0-17|v11267]], [[8.0.0-18|v12288]], [[9.0.0-20|v14336]], [[9.3.0-21|v15360]]&lt;br /&gt;
| Same as USA&lt;br /&gt;
| Same as USA&lt;br /&gt;
| Same as USA&lt;br /&gt;
|-&lt;br /&gt;
| 00016102&lt;br /&gt;
| 00016202&lt;br /&gt;
| 00016302&lt;br /&gt;
| 00016402&lt;br /&gt;
| 00016502&lt;br /&gt;
| 00016602&lt;br /&gt;
| [[NVer]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[1.1.0-1|v16]], [[2.0.0-2|v32]], [[2.1.0-3|v48]], [[2.1.0-4|v64]], [[3.0.0-5|v80]], [[3.0.0-6|v96]], [[4.0.0-7|v112]],  [[4.1.0-8|v128]], [[4.2.0-9|v144]], [[4.3.0-10|v160]], [[5.0.0-11|v176]], non-USA=[[6.0.0-11|v192]]/USA=[[6.1.0-12U|v192]], [[7.0.0-13|v208]], [[7.1.0-14|v224]], [[7.1.0-15|v240]], [[7.1.0-16|v256]], [[7.2.0-17|v272]], [[8.0.0-18|v288]], [[8.1.0-19|v304]], [[9.0.0-20|v320]], [[9.3.0-21|v336]]&lt;br /&gt;
| [[4.0.0-7|v113]], [[4.2.0-9|v128]], [[5.0.0-11|v129]], [[7.1.0-16|v130]], [[7.2.0-17|v272]]&lt;br /&gt;
| [[4.1.0-8|v114]], [[4.2.0-9|v133]], [[4.3.0-10|v134]], [[5.0.0-11|v136]], [[7.0.0-13|v144]], [[7.1.0-14|v160]] [[7.1.0-16|v192]], [[7.2.0-17|v272]], [[8.0.0-18|v208]], [[8.1.0-19|v224]], [[9.0.0-20|v240]]&lt;br /&gt;
| [[4.0.0-7|v113]], [[4.1.0-8|v114]], [[4.2.0-9|v133]], [[4.3.0-10|v134]], [[5.0.0-11|v136]], [[7.0.0-13|v160]], [[7.1.0-14|v176]], [[7.1.0-16|v176]], [[7.2.0-17|v272]], [[8.0.0-18|v224]], [[8.1.0-19|v240]], [[9.0.0-20|v256]], [[9.3.0-21|v272]]&lt;br /&gt;
|-&lt;br /&gt;
| 20016102&lt;br /&gt;
| 20016202&lt;br /&gt;
| 20016302&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]] [[NVer]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v320]], [[9.3.0-21|v336]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00017102&lt;br /&gt;
| 00017202&lt;br /&gt;
| 00017302&lt;br /&gt;
| 00017402&lt;br /&gt;
| 00017502&lt;br /&gt;
| 00017602&lt;br /&gt;
| [[CVer]]&lt;br /&gt;
| [[1.0.0-0|v1024]], [[1.1.0-1|v1045]], [[2.0.0-2|v2049]], [[2.1.0-3|v2069]], [[2.2.0-X|v2088]] [[3.0.0-5|v3088]], [[4.0.0-7|v4098]], [[4.1.0-8|v4113]], [[4.2.0-9|v4130]], [[4.3.0-10|v4145]], [[4.4.0-10|v4163]], [[4.5.0-10|v4176]], [[5.0.0-11|v5120]], [[5.1.0-11|v5136]], [[6.0.0-11|v6146]], [[6.1.0-11|v6160]], [[6.2.0-12|v6178]], [[6.3.0-12|v6192]], [[7.0.0-13|v7175]], [[7.1.0-14|v7187]], [[7.2.0-17|v7203]], [[8.0.0-18|v8196]], [[8.1.0-18|v8208]], [[8.1.0-0_New3DS|v8215]](8.1.0-0_New3DS), [[9.0.0-20|v9218]], [[9.1.0-20J|v9232]](JPN-only), [[9.2.0-20|v9248]], [[9.3.0-21|v9264]], [[9.4.0-21|v9280]]&lt;br /&gt;
| [[1.0.0-0|v1024]], [[1.1.0-1|v1045]], [[2.0.0-2|v2049]], [[2.1.0-3|v2069]], [[2.2.0-X|v2088]] [[3.0.0-5|v3088]], [[4.0.0-7|v4098]], [[4.1.0-8|v4113]], [[4.2.0-9|v4130]], [[4.3.0-10|v4145]], [[4.4.0-10|v4163]], [[4.5.0-10|v4176]], [[5.0.0-11|v5120]], [[5.1.0-11|v5136]], [[6.0.0-11|v6146]], [[6.1.0-11|v6160]], [[6.2.0-12|v6178]], [[6.3.0-12|v6192]], [[7.0.0-13|v7175]], [[7.1.0-14|v7187]], [[7.2.0-17|v7203]], [[8.0.0-18|v8196]], [[8.1.0-18|v8208]], [[9.0.0-20|v9217]], [[9.3.0-21|v9264]]&lt;br /&gt;
| Same as CHN&lt;br /&gt;
| Same as CHN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00040130 - System [[Services API|Modules]] ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TitleID Low&lt;br /&gt;
!  Description&lt;br /&gt;
!  Versions&lt;br /&gt;
|-&lt;br /&gt;
| 00001002&lt;br /&gt;
| sm (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001102&lt;br /&gt;
| [[Filesystem services‎|fs]] (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001202&lt;br /&gt;
| [[Process Manager Services|pm]] (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001302&lt;br /&gt;
| loader (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001402&lt;br /&gt;
| pxi (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001502&lt;br /&gt;
| [[Application Manager Services|AM]] ( Application Manager )&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2053]], [[4.0.0-7|v3072]], [[5.0.0-11|v4098]], [[6.0.0-11|v5120]], [[8.0.0-18|v6148]], [[8.1.0-0_New3DS|v7168]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v8192]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001503&lt;br /&gt;
| SAFE_MODE AM&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001503&lt;br /&gt;
| [[New_3DS]] SAFE_MODE AM&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001602&lt;br /&gt;
| Camera&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2048]], [[4.0.0-7|v3074]], [[5.0.0-11|v4098]], [[6.0.0-11|v5120]], [[7.1.0-14|v6146]], [[8.0.0-18|v7172]], [[9.0.0-20|v9216]], [[9.3.0-21|v10242]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001602&lt;br /&gt;
| [[New_3DS]] Camera&lt;br /&gt;
| [[8.1.0-0_New3DS|v8200]], [[9.0.0-20|v9218]], [[9.3.0-21|v10242]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001702&lt;br /&gt;
| [[Config Services|Config]] (cfg)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[3.0.0-5|v2049]], v3072, [[4.0.0-7|v4096]], [[5.0.0-11|v5122]], [[6.0.0-11|v6145]], [[6.1.0-11|v7168]], [[7.0.0-13|v8196]], [[7.2.0-17|v9220]], [[8.0.0-18|v10243]], [[8.1.0-0_New3DS|v11265]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v12290]], [[9.3.0-21|v13315]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001703&lt;br /&gt;
| SAFE_MODE Config (cfg)&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001703&lt;br /&gt;
| [[New_3DS]] SAFE_MODE Config (cfg)&lt;br /&gt;
| [[8.1.0-0_New3DS|v11265]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001802&lt;br /&gt;
| Codec&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[5.0.0-11|v4098]], [[7.0.0-13|v5120]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
|-&lt;br /&gt;
| 00001803&lt;br /&gt;
| SAFE_MODE Codec&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001803&lt;br /&gt;
| [[New_3DS]] SAFE_MODE Codec&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt, debugger sysmodule. This use devunit-only HIO for devunit&amp;lt;&amp;gt;pc comms. This only exists for development units(launched by NS during startup depending on certain [[Configuration_Memory]] fields&#039; values). This is installed at the [[Factory_Setup|factory]], then later deleted at the factory on retail units.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00001A02&lt;br /&gt;
| DSP&lt;br /&gt;
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[4.0.0-7|v2048]], [[5.0.0-11|v3074]], [[6.0.0-11|v4096]], [[8.0.0-18|v5120]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001A03&lt;br /&gt;
| SAFE_MODE DSP&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001A03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE DSP&lt;br /&gt;
| [[8.1.0-0_New3DS|v6145]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001B02&lt;br /&gt;
| GPIO&lt;br /&gt;
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001B03&lt;br /&gt;
| SAFE_MODE GPIO&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001B03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE GPIO&lt;br /&gt;
| [[8.1.0-0_New3DS|v3073]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001C02&lt;br /&gt;
| GSP&lt;br /&gt;
| [[1.0.0-0|v0]], [[1.1.0-1|v1040]], [[2.0.0-2|v2049]], [[3.0.0-5|v3075]], v4098, [[4.0.0-7|v5120]], [[5.0.0-11|v6145]], [[6.0.0-11|v7168]], [[8.0.0-18|v8196]], [[9.0.0-20|v10240]], [[9.3.0-21|v11264]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001C02&lt;br /&gt;
| [[New_3DS]] GSP&lt;br /&gt;
| [[8.1.0-0_New3DS|v10243]], [[9.3.0-21|v11267]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001C03&lt;br /&gt;
| SAFE_MODE GSP&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001C03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE GSP&lt;br /&gt;
| [[8.1.0-0_New3DS|v9217]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001D02&lt;br /&gt;
| HID (Human Interface Devices) &lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[7.2.0-17|v6148]], [[8.0.0-18|v7168]], [[8.1.0-0_New3DS|v8192]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v9216]], [[9.3.0-21|v10240]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001D03&lt;br /&gt;
| SAFE_MODE HID&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001D03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE HID&lt;br /&gt;
| [[8.1.0-0_New3DS|v8193]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c&lt;br /&gt;
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[5.0.0-11|v2049]], [[8.0.0-18|v3076]], [[9.3.0-21|v5120]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001E02&lt;br /&gt;
| [[New_3DS]] i2c&lt;br /&gt;
| [[8.1.0-0_New3DS|v4096]], [[9.3.0-21|v5121]]&lt;br /&gt;
|- &lt;br /&gt;
| 00001E03&lt;br /&gt;
| SAFE_MODE i2c&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|- &lt;br /&gt;
| 20001E03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE i2c&lt;br /&gt;
| [[8.1.0-0_New3DS|v4097]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001F02&lt;br /&gt;
| MCU&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.1.0-3|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4102]], [[5.0.0-11|v5122]], [[6.0.0-11|v6145]], [[7.0.0-13|v7168]], [[8.0.0-18|v8192]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001F02&lt;br /&gt;
| [[New_3DS]] MCU&lt;br /&gt;
| [[8.1.0-0_New3DS|v8192]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001F03&lt;br /&gt;
| SAFE_MODE MCU&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001F03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE MCU&lt;br /&gt;
| [[8.1.0-0_New3DS|v9217]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002002&lt;br /&gt;
| Microphone (mic)&lt;br /&gt;
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002102&lt;br /&gt;
| PDN&lt;br /&gt;
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002103&lt;br /&gt;
| SAFE_MODE PDN&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002103&lt;br /&gt;
| [[New_3DS]] SAFE_MODE PDN&lt;br /&gt;
| [[8.1.0-0_New3DS|v3073]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002202&lt;br /&gt;
| PTM (Play time, pedometer, and battery manager)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3075]], v4096, [[4.0.0-7|v5120]], [[5.0.0-11|v6146]], [[6.0.0-11|v7168]], [[7.0.0-13|v8192]], [[8.0.0-18|v9219]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002202&lt;br /&gt;
| [[New_3DS]] PTM (Play time, pedometer, and battery manager)&lt;br /&gt;
| [[8.1.0-0_New3DS|v10240]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002203&lt;br /&gt;
| SAFE_MODE PTM&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002203&lt;br /&gt;
| [[New_3DS]] SAFE_MODE PTM&lt;br /&gt;
| [[8.1.0-0_New3DS|v10241]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002302&lt;br /&gt;
| spi&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[5.0.0-11|v2049]], [[8.0.0-18|v3072]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002302&lt;br /&gt;
| [[New_3DS]] spi&lt;br /&gt;
| [[8.1.0-0_New3DS|v4096]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002303&lt;br /&gt;
| SAFE_MODE spi&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002303&lt;br /&gt;
| [[New_3DS]] SAFE_MODE spi&lt;br /&gt;
| [[8.1.0-0_New3DS|v4097]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002402&lt;br /&gt;
| Network manager (AC)&lt;br /&gt;
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2052]], [[2.1.0-3|v3072]], [[3.0.0-5|v4101]], [[5.0.0-11|v5122]], [[7.0.0-13|v6145]], [[8.0.0-18|v7172]], [[9.0.0-20|v8192]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v9216]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002403&lt;br /&gt;
| SAFE_MODE AC&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002403&lt;br /&gt;
| [[New_3DS]] SAFE_MODE AC&lt;br /&gt;
| [[8.1.0-0_New3DS|v8193]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002602&lt;br /&gt;
| Cecd (StreetPass)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3073]], [[4.0.0-7|v4097]], [[5.0.0-11|v5122]], [[6.0.0-11|v6144]], [[6.2.0-12|v7170]], [[7.0.0-13|v8193]], [[8.0.0-18|v9216]], [[9.0.0-20|v10240]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002702&lt;br /&gt;
| CSND&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[4.0.0-7|v2048]], [[5.0.0-11|v3073]], [[8.0.0-18|v4096]], [[9.0.0-20|v5120]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002703&lt;br /&gt;
| SAFE_MODE CSND&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002703&lt;br /&gt;
| [[New_3DS]] SAFE_MODE CSND&lt;br /&gt;
| [[8.1.0-0_New3DS|v5121]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp ([[Download Play]])&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3078]], [[5.0.0-11|v4099]], [[8.0.0-18|v5123]], [[9.0.0-20|v6145]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
|-&lt;br /&gt;
| 00002902&lt;br /&gt;
| http&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.1.0-3|v2049]], [[2.2.0-X|v3072]], [[3.0.0-5|v4099]], [[4.0.0-7|v5122]], [[5.0.0-11|v6145]], [[7.0.0-13|v7171]], [[7.1.0-14|v8192]], [[8.0.0-18|v9220]], [[8.1.0-18|v10245]], [[8.1.0-0_New3DS|v11264]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v12288]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002903&lt;br /&gt;
| SAFE_MODE http&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002903&lt;br /&gt;
| [[New_3DS]] SAFE_MODE http&lt;br /&gt;
| [[8.1.0-0_New3DS|v10241]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002A02&lt;br /&gt;
| MP&lt;br /&gt;
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002A03&lt;br /&gt;
| SAFE_MODE MP&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002B02&lt;br /&gt;
| NDM&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[5.0.0-11|v4098]], [[8.0.0-18|v5124]], [[8.1.0-0_New3DS|v6144]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002C02&lt;br /&gt;
| [[NIM Services|NIM]] (Memory-region: &amp;quot;SYSTEM&amp;quot;)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[3.0.0-5|v2055]], [[4.0.0-7|v3074]], [[5.0.0-11|v4100]], [[6.0.0-11|v5120]], [[7.0.0-13|v6148]], [[7.2.0-17|v7174]], [[8.0.0-18|v8195]], [[8.1.0-0_New3DS|v9217]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v10249]], [[9.3.0-21|v11267]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002C03&lt;br /&gt;
| SAFE_MODE NIM&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002C03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE NIM&lt;br /&gt;
| [[8.1.0-0_New3DS|v9217]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002D02&lt;br /&gt;
| NWM ( Low-level wifi manager )&lt;br /&gt;
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2052]], [[2.2.0-X|v3072]], [[3.0.0-5|v4101]], [[4.0.0-7|v5120]], [[5.0.0-11|v6148]], [[6.0.0-11|v7169]], [[7.2.0-17|v8196]], [[8.0.0-18|v9216]], [[9.0.0-20|v10240]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002D03&lt;br /&gt;
| SAFE_MODE NWM&lt;br /&gt;
| [[1.0.0-0|v0]], [[6.0.0-11|v5120]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002D03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE NWM&lt;br /&gt;
| [[8.1.0-0_New3DS|v10241]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002E02&lt;br /&gt;
| Sockets&lt;br /&gt;
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2053]], [[3.0.0-5|v3075]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002E03&lt;br /&gt;
| SAFE_MODE Sockets&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002E03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE Sockets&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002F02&lt;br /&gt;
| SSL (Memory-region: &amp;quot;SYSTEM&amp;quot;)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[2.1.0-3|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5122]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002F03&lt;br /&gt;
| SAFE_MODE SSL&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002F03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE SSL&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003102&lt;br /&gt;
| [[Process Services‎|PS]] ( Process Manager )&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[5.0.0-11|v2049]], [[6.0.0-11|v3072]], [[8.0.0-18|v4096]], [[9.0.0-20|v5120]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003103&lt;br /&gt;
| SAFE_MODE PS&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20003103&lt;br /&gt;
| [[New_3DS]] SAFE_MODE PS&lt;br /&gt;
| [[8.1.0-0_New3DS|v5121]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003202&lt;br /&gt;
| FriendsList (friends)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5122]], [[7.0.0-13|v6145]], [[8.0.0-18|v7172]], [[9.0.0-20|v8192]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
|-&lt;br /&gt;
| 00003203&lt;br /&gt;
| SAFE_MODE FriendsList (friends)&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20003203&lt;br /&gt;
| [[New_3DS]] SAFE_MODE FriendsList (friends)&lt;br /&gt;
| [[8.1.0-0_New3DS|v8193]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003302&lt;br /&gt;
| IR (Infrared)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[8.0.0-18|v6148]], [[8.1.0-0_New3DS|v7170]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v8192]], [[9.3.0-21|v9216]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003303&lt;br /&gt;
| SAFE_MODE IR&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20003303&lt;br /&gt;
| [[New_3DS]] SAFE_MODE IR&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|- &lt;br /&gt;
| 00003402&lt;br /&gt;
| BOSS (SpotPass)&lt;br /&gt;
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2053]], [[2.2.0-X|v3073]], [[3.0.0-5|v4101]], [[4.0.0-7|v5122]], [[5.0.0-11|v6146]], [[6.0.0-11|v7169]], [[6.2.0-12|v8193]], [[7.0.0-13|v9222]], [[8.0.0-18|v10240]], [[9.0.0-20|v11266]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003502&lt;br /&gt;
| News (Notifications)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[5.0.0-11|v4097]], [[8.0.0-18|v5120]], [[9.0.0-20|v6147]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003602&lt;br /&gt;
| This only exist for development units(launched by NS during startup depending on certain [[Configuration_Memory]] fields&#039; values).&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00003702&lt;br /&gt;
| [[RO_Services|RO]]&lt;br /&gt;
| [[2.0.0-2|v0]], [[4.0.0-7|v1024]], [[5.0.0-11|v2049]], [[7.2.0-17|v3074]], [[8.0.0-18|v4096]], [[9.0.0-20|v5120]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v6148]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003802&lt;br /&gt;
| act (handles Nintendo Network &#039;&#039;&#039;a&#039;&#039;&#039;c&#039;&#039;&#039;c&#039;&#039;&#039;oun&#039;&#039;&#039;t&#039;&#039;&#039;s)&lt;br /&gt;
| [[7.0.0-13|v1029]], [[7.1.0-14|v2050]], [[7.2.0-17|v3077]], [[8.0.0-18|v4099]], [[8.1.0-0_New3DS|v5120]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v6144]], [[9.3.0-21|v7168]]&lt;br /&gt;
|-&lt;br /&gt;
| 00004002&lt;br /&gt;
| Old3DS [[NFC_Services|nfc]]&lt;br /&gt;
| [[9.3.0-21|v2053]]&lt;br /&gt;
|-&lt;br /&gt;
| 20004002&lt;br /&gt;
| [[New_3DS]] [[NFC_Services|nfc]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v1024]], [[9.3.0-21|v2053]]&lt;br /&gt;
|-&lt;br /&gt;
| 20004102&lt;br /&gt;
| [[New_3DS]] mvd&lt;br /&gt;
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v1024]]&lt;br /&gt;
|-&lt;br /&gt;
| 20004202&lt;br /&gt;
| [[New_3DS]] [[QTM Services|qtm]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v8]], [[9.0.0-20|v1024]], [[9.3.0-21|v2052]]&lt;br /&gt;
|-&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]] (Memory-region: &amp;quot;SYSTEM&amp;quot;)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[2.2.0-X|v2048]], [[3.0.0-5|v3077]], v4096, [[4.0.0-7|v5121]], [[5.0.0-11|v6148]], [[5.1.0-11|v7168]], [[6.0.0-11|v8193]], [[6.1.0-11|v9216]], [[7.0.0-13|v10248]], [[7.2.0-17|v11268]], [[8.0.0-18|v12291]], [[8.1.0-0_New3DS|v13312]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v14336]], [[9.3.0-21|v15360]]&lt;br /&gt;
|-&lt;br /&gt;
| 00008003&lt;br /&gt;
| SAFE_MODE NS&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20008003&lt;br /&gt;
| [[New_3DS]] SAFE_MODE NS&lt;br /&gt;
| [[8.1.0-0_New3DS|v13313]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once Home Menu finishes loading, all of the above system modules are running, except for MP, RO, and act which are automatically [[Process_Manager_Services|loaded]] when a process requires them. When [[Process_Manager_Services|PM]]-module terminates processes, it will check whether the processes listed as dependencies for this process are listed as dependencies for other processes. Any processes which are no longer listed in any processes dependencies lists are then terminated. On [[New_3DS]], the only New3DS-specific system-module which automatically gets loaded during system boot is qtm.&lt;br /&gt;
&lt;br /&gt;
All of the above system modules use the &amp;quot;BASE&amp;quot; [[SVC|memory-region]](specified in the exheader), except when listed otherwise for certain modules.&lt;br /&gt;
&lt;br /&gt;
When handling the exheader dependency list starting with [[8.0.0-18]], Old3DS FIRM [[Process_Manager_Services|PM]]-module now skips handling titles in this list which have any bits in programID-low bitmask 0xF0000000 set(with [[8.0.0-18]] this is hard-coded). The exheader dependency list handling change is for the [[New 3DS]] system-module(s), which do not exist on Old3DS.&lt;br /&gt;
&lt;br /&gt;
=== 00040138 - [[FIRM|System Firmware]] ===&lt;br /&gt;
NATIVE_FIRM and SAFE_MODE_FIRM for the initial versions are exactly the same, besides [[Configuration_Memory|core-version]] fields. SAFE_MODE_FIRM is used for running SAFE_MODE titles, on retail SAFE_MODE_FIRM seems to be only used for running the [[System_Settings#System_Updater|System Updater]] application. When a GBA VC title is launched, AGB_FIRM is launched to handle running this title. GBA VC savegames stored under SD card /title/&amp;lt;TID&amp;gt;/data use a custom format, this is handled by AGB_FIRM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TitleID Low&lt;br /&gt;
!  Description&lt;br /&gt;
!  USA/EUR/JPN Versions&lt;br /&gt;
!  CHN Versions&lt;br /&gt;
!  KOR Versions&lt;br /&gt;
!  TWN Versions&lt;br /&gt;
|-&lt;br /&gt;
| 00000001&lt;br /&gt;
| Unknown, very similar to SAFE_MODE_FIRM. Exists only on dev units and seems to only be used by SystemUpdaters.&lt;br /&gt;
| v0&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM (Native Firmware)&lt;br /&gt;
| [[1.0.0-0|v432]], [[1.1.0-1|v1472]], [[2.0.0-2|v2516]], [[2.1.0-3|v3553]], [[2.2.0-X|v4595]], [[3.0.0-5|v5647]], [[4.0.0-7|v6677]], [[4.1.0-8|v7712]], [[5.0.0-11|v8758]], [[5.1.0-11|v9792]], [[6.0.0-11|v10833]], [[6.1.0-11|v11872]], [[7.0.0-13|v12916]], [[7.2.0-17|v13956]], [[8.0.0-18|v15047]], [[9.0.0-20|v17120]], [[9.3.0-21|v18182]]&lt;br /&gt;
| Same as USA/EUR/JPN starting with the USA/EUR/JPN [[4.0.0-7]] title-version&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
|-&lt;br /&gt;
| 20000002&lt;br /&gt;
| [[New_3DS]] NATIVE_FIRM (Native Firmware)&lt;br /&gt;
| [[8.1.0-0_New3DS|v16085]], [[9.0.0-20|v17120]], [[9.3.0-21|v18182]]&lt;br /&gt;
| N/A&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
|-&lt;br /&gt;
| 00000003&lt;br /&gt;
| SAFE_MODE_FIRM &lt;br /&gt;
| [[1.0.0-0|v432]], [[3.0.0-5|v5632]]&lt;br /&gt;
| Same as USA/EUR/JPN starting with the USA/EUR/JPN [[3.0.0-5]] title-version&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
|-&lt;br /&gt;
| 20000003&lt;br /&gt;
| [[New_3DS]] SAFE_MODE_FIRM &lt;br /&gt;
| [[8.1.0-0_New3DS|v16081]]&lt;br /&gt;
| N/A&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
|-&lt;br /&gt;
| 00000102 &lt;br /&gt;
| TWL_FIRM ( DSi Firmware )&lt;br /&gt;
| [[1.0.0-0|v432]], [[2.0.0-2|v1489]], [[3.0.0-5|v2565]], [[4.0.0-7|v4625]], [[4.4.0-10|v5681]], [[4.5.0-10|v6704]], [[6.0.0-11|v7762]], [[6.2.0-12|v8817]]&lt;br /&gt;
| Same as USA/EUR/JPN starting with the USA/EUR/JPN [[4.0.0-7]] title-version&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
|-&lt;br /&gt;
| 20000102 &lt;br /&gt;
| [[New_3DS]] TWL_FIRM ( DSi Firmware )&lt;br /&gt;
| [[8.1.0-0_New3DS|v9936]]&lt;br /&gt;
| N/A&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
|- &lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM ( GBA Firmware )&lt;br /&gt;
| [[3.0.0-5|v519]], [[4.0.0-7|v2576]], [[6.0.0-11|v3665]]&lt;br /&gt;
| [[4.0.0-7|v2576]]&lt;br /&gt;
| [[4.0.0-7|v2576]], [[6.0.0-11|v3665]]&lt;br /&gt;
| Same as CHN.&lt;br /&gt;
|- &lt;br /&gt;
| 20000202&lt;br /&gt;
| [[New_3DS]] AGB_FIRM ( GBA Firmware )&lt;br /&gt;
| [[8.1.0-0_New3DS|v4816]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TWL System Titles ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Content Category&lt;br /&gt;
!  Bit Mask(s)&lt;br /&gt;
!  Category Bit Mask&lt;br /&gt;
|-&lt;br /&gt;
|  System Application&lt;br /&gt;
|  TWL&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;0x1&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;0x4&lt;br /&gt;
|  0x8005&lt;br /&gt;
|-&lt;br /&gt;
|  System Archive&lt;br /&gt;
|  TWL&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;0x1&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;0x2&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;0x4&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;0x8&lt;br /&gt;
|  0x800F&lt;br /&gt;
|}&lt;br /&gt;
Bitmask 0x1 for TWL titles determines whether the title will be updated during a System Update.&lt;br /&gt;
&lt;br /&gt;
=== 00048005 - System Applications===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TitleID Low&lt;br /&gt;
!  Region&lt;br /&gt;
!  Description&lt;br /&gt;
!  Versions&lt;br /&gt;
!  Information&lt;br /&gt;
|-&lt;br /&gt;
| 42383841(B88A)&lt;br /&gt;
| ALL&lt;br /&gt;
| [[DS Internet]]&lt;br /&gt;
| v0, [[2.1.0-4|v1025]], [[3.0.0-5|v2048]]&lt;br /&gt;
| [[DS Internet]] is the DSi-mode application launched by [[System Settings]] for setting TWL wifi configuration. &lt;br /&gt;
|-&lt;br /&gt;
| 484E4441(HNDA)&lt;br /&gt;
| ALL&lt;br /&gt;
| [[Download Play]]&lt;br /&gt;
| v1024&lt;br /&gt;
| This [[Download Play]] application is the DS-mode Download Play client, launched by the 3DS-mode Download Play application.&lt;br /&gt;
|-&lt;br /&gt;
| 484E4443(HNDC)&lt;br /&gt;
| CHN&lt;br /&gt;
| [[Download Play]]&lt;br /&gt;
| v1024&lt;br /&gt;
| See Above Description.&lt;br /&gt;
|-&lt;br /&gt;
| 484E444B(HNDK)&lt;br /&gt;
| KOR&lt;br /&gt;
| [[Download Play]]&lt;br /&gt;
| v1024&lt;br /&gt;
| See Above Description.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0004800F - System Data Archives===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TitleID Low&lt;br /&gt;
!  Description&lt;br /&gt;
!  Versions&lt;br /&gt;
|-&lt;br /&gt;
| 484E4841(HNHA)&lt;br /&gt;
| [[Nintendo DS Cart Whitelist]]&lt;br /&gt;
| v0, [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[4.2.0-9|v5120]], [[4.3.0-10|v6145]], [[4.4.0-10|v7168]], [[4.5.0-10|v8192]], [[5.0.0-11|v9216]], [[6.0.0-11|v10240]], [[7.0.0-13|v11264]]&lt;br /&gt;
|-&lt;br /&gt;
| 484E4C41(HNLA)&lt;br /&gt;
| [[Version Data]]&lt;br /&gt;
| v0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
New system updates only block DS flash-cards when the above whitelist was updated, or when TWL_FIRM was updated. The whitelist contains the data used for detecting flash-cards, this is used by TWL_FIRM.&lt;br /&gt;
&lt;br /&gt;
== Application Titles ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Content Category&lt;br /&gt;
!  Bit Mask(s)&lt;br /&gt;
!  Category Bit Mask&lt;br /&gt;
|-&lt;br /&gt;
|  [[Title list/eShop Titles|Application]] (eShop Title)&lt;br /&gt;
|  Normal&lt;br /&gt;
|  0x0000&lt;br /&gt;
|-&lt;br /&gt;
|  DLP Child&lt;br /&gt;
|  DlpChild&lt;br /&gt;
|  0x0001&lt;br /&gt;
|-&lt;br /&gt;
|  [[EShop Demos|Demo]]&lt;br /&gt;
|  Demo&lt;br /&gt;
|  0x0002&lt;br /&gt;
|-&lt;br /&gt;
|  [[Title list/Patches|Patch]]&lt;br /&gt;
|  CannotExecution&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;Patch&lt;br /&gt;
|  0x000E&lt;br /&gt;
|-&lt;br /&gt;
|  [[Title list/DLC|Add-on Content]] (DLC)&lt;br /&gt;
|  NotRequireRightForMount&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;CannotExecution&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;AddOnContents&lt;br /&gt;
|  0x008C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00040001 - [[Download Play]] Titles ===&lt;br /&gt;
This titleID-high/programID-high is used for the titles sent over [[Download Play]]. Only one 00040001 Download Play title is installed to NAND /title at a time. There can be a maximum of 255 Download Play child titles per Unique ID, indexed by Title ID Variation. The legal index range: 0x0 - 0xff.&lt;br /&gt;
&lt;br /&gt;
== TWL Application Titles ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Content Category&lt;br /&gt;
!  Bit Mask(s)&lt;br /&gt;
!  Category Bit Mask&lt;br /&gt;
|-&lt;br /&gt;
|  Application (DSiWare)&lt;br /&gt;
|  TWL&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;0x4&lt;br /&gt;
|  0x8004&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00048004 - DSiWare ===&lt;br /&gt;
Although these have a titleID high separate from DSi and a titleID is stored in the SRLs, the content of these SRLs are identical to DSi.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TitleID Low&lt;br /&gt;
!  Region&lt;br /&gt;
!  Description&lt;br /&gt;
!  Versions&lt;br /&gt;
|-&lt;br /&gt;
| 4B4B5456(KKTV)&lt;br /&gt;
| EUR&lt;br /&gt;
| Cut the Rope&lt;br /&gt;
| v0, v64&lt;br /&gt;
|-&lt;br /&gt;
| 4B4E5256(KNRV)&lt;br /&gt;
| EUR&lt;br /&gt;
| A Little Bit of... Brain Training™: Maths Edition &lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 4B5A4C56(KZLV)&lt;br /&gt;
| EUR&lt;br /&gt;
| Plants vs. Zombies™&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 4B454256(KEBV)&lt;br /&gt;
| EUR&lt;br /&gt;
| ELECTROPLANKTON (Hanenbow)&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 4B513956(KQ9V)&lt;br /&gt;
| EUR&lt;br /&gt;
| Zelda: Four Swords Anniversary Edition&lt;br /&gt;
| v16&lt;br /&gt;
|-&lt;br /&gt;
| 4B574256(KWBV)&lt;br /&gt;
| EUR&lt;br /&gt;
| Mario Calculator &lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 4B574656(KWFV)&lt;br /&gt;
| EUR&lt;br /&gt;
| Mario Clock &lt;br /&gt;
| v0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Ninjhax&amp;diff=10903</id>
		<title>Ninjhax</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Ninjhax&amp;diff=10903"/>
		<updated>2014-11-28T23:23:36Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Service access */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ninjhax is the an exploit by smea for the game Cubic Ninja. It was released on November 20th, 2014.&lt;br /&gt;
&lt;br /&gt;
When triggered, it will boot a [[3DSX_Format | 3dsx-file]] from the sdcard root called &amp;quot;boot.3dsx&amp;quot;. This file is usually the [[Homebrew Launcher]], which in turn can be used to launch other games/apps from the (micro)SD card.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Visit [http://smealum.net/ninjhax/ here] for instructions on how to install Ninjhax!&lt;br /&gt;
&lt;br /&gt;
==Service access==&lt;br /&gt;
&lt;br /&gt;
ninjhax gives developers access to a number of services. These include :&lt;br /&gt;
&lt;br /&gt;
* ac:u&lt;br /&gt;
* APT:U&lt;br /&gt;
* boss:U&lt;br /&gt;
* cam:u&lt;br /&gt;
* cecd:u&lt;br /&gt;
* cfg:u&lt;br /&gt;
* dlp:FKCL&lt;br /&gt;
* dlp:SRVR&lt;br /&gt;
* dsp::DSP&lt;br /&gt;
* frd:u&lt;br /&gt;
* fs:USER&lt;br /&gt;
* gsp::Gpu&lt;br /&gt;
* hid:USER&lt;br /&gt;
* http:C&lt;br /&gt;
* ir:u&lt;br /&gt;
* mic:u&lt;br /&gt;
* ndm:u&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;news:u&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* nwm::UDS&lt;br /&gt;
* ptm:u&lt;br /&gt;
* pxi:dev&lt;br /&gt;
* soc:U&lt;br /&gt;
* ssl:C&lt;br /&gt;
* y2r:u&lt;br /&gt;
&lt;br /&gt;
Additionally, Old 3DS models (3DS, 3DS XL and 2DS) are given access to the following :&lt;br /&gt;
&lt;br /&gt;
* csnd:SND&lt;br /&gt;
&lt;br /&gt;
In contrast, New 3DS models (New 3DS, New 3DS XL) get access to :&lt;br /&gt;
&lt;br /&gt;
* am:app&lt;br /&gt;
* ir:rst&lt;br /&gt;
* l2b2:u&lt;br /&gt;
* l2b:u&lt;br /&gt;
* mvd:STD&lt;br /&gt;
* nim:aoc&lt;br /&gt;
* y2r2:u&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The normal service used for accessing [[Circle Pad Pro]] is not accessible: [[IR_Services|ir:USER]].&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
At the moment, ninjhax only allows users to access 64MB of RAM, including on the New 3DS. This may change in the future.&lt;br /&gt;
&lt;br /&gt;
As there is currently no good way to use the DSP from homebrew, sound output is not yet possible on the New 3DS. At the moment, there is also no known way of running code on the New 3DS&#039;s extra CPU cores under ninjhax, though it is possible to use 80% of the system core&#039;s time using [[APT:SetApplicationCpuTimeLimit]] rather than 30% as was the case on the Old 3DS.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Games&amp;diff=10310</id>
		<title>Games</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Games&amp;diff=10310"/>
		<updated>2014-10-24T20:54:00Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Game list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists off many 3DS games and info about them, as well info about the product code and serial format. If the list is missing a game, and you have info about it, feel free to add it to the list.&lt;br /&gt;
&lt;br /&gt;
Some of these games also have a savegame dumped, which can be downloaded under the Savegame column of the table. Info about the savegames&#039; filesystem can be found on the [[Savegames]] page.&lt;br /&gt;
&lt;br /&gt;
== Game list ==&lt;br /&gt;
Note the [DEMO] in the title name denotes that the game is a demo. Also, when adding games, please keep them in alphabetical order, keeping demos at the start of the list. The [DEV] in the title name denotes that the title is a developer encrypted application, and may not follow retail serial/product code conventions. The &#039;X&#039; at the end of the Serials and Product codes of the below, takes the place of the region identifier, so there is not more than one entry per game. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;35%&amp;quot; | Title&lt;br /&gt;
! width=&amp;quot;12%&amp;quot; | [[Serials|Serial]]&lt;br /&gt;
! width=&amp;quot;12% | [[Serials#Product Code|Product Code]]&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | EUR (P)&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | USA (E)&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | JPN (J)&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | ROM Size&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | FLASH Size&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | FLASH ID&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | FLASH Chip #&lt;br /&gt;
! width=&amp;quot;6%&amp;quot; | Savegame&lt;br /&gt;
|-&lt;br /&gt;
| [DEMO][DEV] Mario Kart 7 (E3)&lt;br /&gt;
| ?&lt;br /&gt;
| CTR-P-AMKU&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [DEMO][DEV] Super Mario 3D Land (E3)&lt;br /&gt;
| ?&lt;br /&gt;
| CTR-P-CTAP&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [DEMO] Nintendogs+Cats&lt;br /&gt;
| LNZ-CTR-ADAX&lt;br /&gt;
| CTR-P-ADAX&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [DEMO] Pokémon Omega Ruby and Alpha Sapphire Special Demo&lt;br /&gt;
| ?&lt;br /&gt;
| CTR-N-NAHA&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 2GBit&lt;br /&gt;
| 1MByte&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [DEMO] Steel Diver &lt;br /&gt;
| LNZ-CTR-ASDX&lt;br /&gt;
| CTR-P-ASDX&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [DEMO] Super Mario 3D Land &lt;br /&gt;
| LNZ-CTR-AREX&lt;br /&gt;
| CTR-P-AREX &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [DEMO] Super Smash Bros.&lt;br /&gt;
| LNA-CTR-NXCX&lt;br /&gt;
| CTR-P-NXCX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 2GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [DEMO] Super Smash Bros. Special Demo Version&lt;br /&gt;
| LNA-CTR-NXCX&lt;br /&gt;
| CTR-P-NXCX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 2Gbit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [DEMO] The Legend of Zelda: Ocarina of Time 3D&lt;br /&gt;
| LNZ-CTR-AQEX&lt;br /&gt;
| CTR-P-AQEX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Animal Crossing: New Leaf&lt;br /&gt;
| LNA-CTR-EGDX&lt;br /&gt;
| CTR-P-EGDX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 8GBit&lt;br /&gt;
| 10MByte&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Asphalt 3D&lt;br /&gt;
| LNA-CTR-ASFX&lt;br /&gt;
| CTR-P-ASFX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Cubic Ninja&lt;br /&gt;
| LNA-CTR-AQNX&lt;br /&gt;
| CTR-P-AQNX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 1GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Dead or Alive - Dimensions&lt;br /&gt;
| LNA-CTR-ADDX&lt;br /&gt;
| CTR-P-ADDX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 16GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Lego Star Wars III: The Clone Wars&lt;br /&gt;
| LNA-CTR-ALGX&lt;br /&gt;
| CTR-P-ALGX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Mario &amp;amp; Luigi: Dream Team Bros.&lt;br /&gt;
| LNA-CTR-AYMX&lt;br /&gt;
| CTR-P-AYMX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 8GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Mario Kart 7&lt;br /&gt;
| LNA-CTR-AMKX&lt;br /&gt;
| CTR-P-AMKX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 8GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Nintendogs+Cats: French Bulldog &amp;amp; New Friends&lt;br /&gt;
| LNA-CTR-ADBX&lt;br /&gt;
| CTR-P-ADBX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| 0xC22213&lt;br /&gt;
| 25L4001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| One Piece: Unlimited Cruise SP&lt;br /&gt;
| LNA-CTR-ALFX&lt;br /&gt;
| CTR-P-ALFX&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Pilotwings Resort&lt;br /&gt;
| LNA-CTR-AWAX&lt;br /&gt;
| CTR-P-AWAX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 1GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Pokémon Mystery Dungeon: Gates to Infinity&lt;br /&gt;
| LNA-CTR-APDX&lt;br /&gt;
| CTR-P-APDX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 8GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Pokémon Y&lt;br /&gt;
| LNA-CTR-EK2X&lt;br /&gt;
| CTR-P-EK2A&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 16GBit&lt;br /&gt;
| 1MByte&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Puzzle Bobble Universe&lt;br /&gt;
| LNA-CTR-ABBX&lt;br /&gt;
| CTR-P-ABBX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[Raving Rabbids: Travel in Time 3D]]&lt;br /&gt;
| LNA-CTR-ARBX&lt;br /&gt;
| CTR-P-ARBX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 2GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| [http://dl.dropbox.com/u/7830918/3DS%20Upload/decrypted.bin de]/[http://dl.dropbox.com/u/7830918/3DS%20Upload/encrypted.bin en]&lt;br /&gt;
|-&lt;br /&gt;
| Ridge Racer 3D&lt;br /&gt;
| LNA-CTR-ARRX&lt;br /&gt;
| CTR-P-ARRX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 8GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| 0xC22213&lt;br /&gt;
| 25L4001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Samurai Warriors - Chronicles&lt;br /&gt;
| LNA-CTR-A66X&lt;br /&gt;
| CTR-P-A66X&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 16GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| 0xC22213&lt;br /&gt;
| 25L4001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Sonic: Lost World&lt;br /&gt;
| LNA-CTR-ARVX&lt;br /&gt;
| CTR-P-ARVX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 16GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Splinter Cell 3D&lt;br /&gt;
| LNA-CTR-ASCX&lt;br /&gt;
| CTR-P-ASCX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 16Gbit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Steel Diver&lt;br /&gt;
| LNA-CTR-ASDX&lt;br /&gt;
| CTR-P-ASDX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 2GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| 0xC22213&lt;br /&gt;
| 25L4001&lt;br /&gt;
| [http://dl.dropbox.com/u/32759832/3DS_saves/Steel_Diver/decrypted.sav de]/[http://dl.dropbox.com/u/32759832/3DS_saves/Steel_Diver/encrypted.sav en]&lt;br /&gt;
|-&lt;br /&gt;
| Super Mario 3D Land&lt;br /&gt;
| LNA-CTR-AREX&lt;br /&gt;
| CTR-P-AREX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Super Monkey Ball 3D PAL&lt;br /&gt;
| LNA-CTR-ASMX&lt;br /&gt;
| CTR-P-ASMX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 2GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Super Smash Bros.&lt;br /&gt;
| LNA-CTR-NXCX&lt;br /&gt;
| CTR-P-NXCX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 16GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Super Street Fighter IV - 3D Edition&lt;br /&gt;
| LNA-CTR-ASSX&lt;br /&gt;
| CTR-P-ASSX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 16GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| The Legend of Zelda: A Link between Worlds&lt;br /&gt;
| LNA-CTR-BZLX&lt;br /&gt;
| CTR-P-BZLX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 8GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[The Legend of Zelda: Ocarina of Time 3D]]&lt;br /&gt;
| LNA-CTR-AQEX&lt;br /&gt;
| CTR-P-AQEX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| [http://dl.dropbox.com/u/32759832/3DS_saves/Zelda_OoT/decrypted.sav de]/[http://dl.dropbox.com/u/32759832/3DS_saves/Zelda_OoT/encrypted.sav en]&lt;br /&gt;
|-&lt;br /&gt;
| The Sims 3&lt;br /&gt;
| LNA-CTR-AS3X&lt;br /&gt;
| CTR-P-AS3X&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 4GBit&lt;br /&gt;
| 512kByte&lt;br /&gt;
| 0xC22213&lt;br /&gt;
| 25L4001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Tom Clancy&#039;s Ghost Recon: Shadow Wars&lt;br /&gt;
| LNA-CTR-AGRX&lt;br /&gt;
| CTR-P-ARGX&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| 2GBit&lt;br /&gt;
| 128kByte&lt;br /&gt;
| 0xC22211&lt;br /&gt;
| 25L1001&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Elisherer&#039;s Savefile collection: [http://sherer.co.il/saves http://sherer.co.il/saves]&lt;br /&gt;
&lt;br /&gt;
== SD Savegames ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Savegame&lt;br /&gt;
|-&lt;br /&gt;
| Crashmo&lt;br /&gt;
| [https://dl.dropbox.com/u/20520664/crashmo_usa.sav cleartext]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=MIC_Services&amp;diff=10039</id>
		<title>MIC Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=MIC_Services&amp;diff=10039"/>
		<updated>2014-10-05T05:17:19Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Microphone service &amp;quot;mic:u&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= Microphone service &amp;quot;mic:u&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;
| 0x00010042&lt;br /&gt;
| [[MIC:MapSharedMem|MapSharedMem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[MIC:UnmapSharedMem|UnmapSharedMem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030140&lt;br /&gt;
| [[MICU:Initialize|Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| AdjustSampling(u8 input)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| StopSampling&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| IsSampling&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| GetEventHandle. This event is signaled by MIC-module when more audio-data is available in shared-mem.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080040&lt;br /&gt;
| SetControl(u8 input). This is a wrapper for CDCMIC command 0x00010040. &lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| GetControl. This is a wrapper for CDCMIC command 0x00020000.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0040&lt;br /&gt;
| SetRecording(u8 input). This is a wrapper for CDCMIC command 0x00030040. 0 = disable recording, 1 = enable recording. When recording is disabled with this, MIC-module writes value 0xFFFF to the output audio sample data in shared-mem, since that&#039;s what the [[MIC]] hardware returns here.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| IsRecording. This is a wrapper for CDCMIC command 0x00040000.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0042&lt;br /&gt;
| (size, [[IPC Command Structure|&amp;lt;translate-header&amp;gt;]], bufptr) This is a wrapper for CDCMIC command 0x00050042.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0040&lt;br /&gt;
| (u8 input) This writes the input value to a MIC-module state field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| This writes the u8 value of the MIC-module field also used by command 0x000D0040, to cmdreply indexword[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0040&lt;br /&gt;
| (u8 input) This writes the input u8 value to a MIC-module state field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100040&lt;br /&gt;
| When the input value is 0, value 1 is written to an u8 MIC module state field. Otherwise, value 0 is written there. Normally the input value is non-zero.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is an interface for using the MIC hardware via the &amp;quot;cdc:MIC&amp;quot; service and the MIC [[IO]] registers.&lt;br /&gt;
&lt;br /&gt;
Only one session can be open for this service total(that is, only one process can use this service at a time).&lt;br /&gt;
&lt;br /&gt;
=Control value=&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;
| 6-0&lt;br /&gt;
| Amplification, 0=none.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Doesn&#039;t affect output audio data in shared-mem?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[MIC Shared Memory]]&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=10031</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=10031"/>
		<updated>2014-10-01T05:03:54Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* I2C Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= I2C Service Names =&lt;br /&gt;
* &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
* &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
* &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
* &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
* &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
* &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
* &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&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;
| 0x00010100&lt;br /&gt;
| SetRegisterBits8 (u8 devid, u8 regid, u8 regdata, u8 mask)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| EnableRegisterBits8 (u8 devid, u8 regid, u8 enablemask)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0&lt;br /&gt;
| DisableRegisterBits8 (u8 devid, u8 regid, u8 disablemask)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102&lt;br /&gt;
| MultiSetRegisterBits16 (u16 regid, u16 regdata, u16 mask, devcount, u8* devidlistptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| WriteRegister8 (u8 devid, u8 regid, u8 regdata)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| WriteCommand8 (u8 devid, u8 cmdid)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| WriteRegister16 (u8 devid, u16 regid, u16 regdata)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2&lt;br /&gt;
| MultiWriteRegister16 (u16 regid, u16 regdata, devcount, u8* devidlistptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0009....&lt;br /&gt;
| u8 ReadRegister8 (u8 devid, u8 regid)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A....&lt;br /&gt;
| u16 ReadRegister16 (u8 devid, u16 regid)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2&lt;br /&gt;
| WriteRegisterBuffer8 (u8 devid, u8 regid, buffersize, u8* bufferptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2&lt;br /&gt;
| WriteRegisterBuffer16 (u8 devid, u16 regid, buffersize, u16* bufferptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D....&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2&lt;br /&gt;
| WriteRegisterBuffer8_again? (u8 devid, u8 regid, buffersize, u8* bufferptr)&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;
| 0x001100C2&lt;br /&gt;
| ReadRegisterBuffer(u8 devid, u16 regid, buffersize, u8 *buff)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2&lt;br /&gt;
| WriteRegisterBuffer(u8 devid, u16 regid, buffersize, u8 *buff)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0013....&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x0015....&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=10030</id>
		<title>GPIO Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=10030"/>
		<updated>2014-10-01T04:35:27Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* I2C Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= GPIO Service Names =&lt;br /&gt;
* &amp;quot;gpio:CDC&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:MCU&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:HID&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:NWM&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:IR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&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;
| ?(u32 unk1,u32* ret) //reads from 0x1ec47020&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?(u32 unk1,u32* ret)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004....&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| ?(u32 unk1,u32* ret)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| GetIRGPIO(u32 unk1,u32* ret)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| SetIRGPIO(u32 unk1,u32 unk2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090082&lt;br /&gt;
| ?(u32 unk1,u32 unk2,HANDEL unk3)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=10028</id>
		<title>GPIO Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=10028"/>
		<updated>2014-10-01T04:33:47Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* I2C Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= GPIO Service Names =&lt;br /&gt;
* &amp;quot;gpio:CDC&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:MCU&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:HID&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:NWM&amp;quot;&lt;br /&gt;
* &amp;quot;gpio:IR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&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;
| ?(u32 unk1,u32* ret) //reads from 0x1ec47020&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002....&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?(u32 unk1,u32* ret)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004....&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005....&lt;br /&gt;
| ?(u32 unk1,u32* ret)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?(u32 unk1,u32 unk2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| GetIRGPIO(u32 unk1,u32* ret) recieve&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| SetIRGPIO(u32 unk1,u32 unk2) send&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090082&lt;br /&gt;
| ?(u32 unk1,u32 unk2,HANDEL unk3)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=10026</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=10026"/>
		<updated>2014-10-01T04:13:52Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Filesystem service &amp;quot;fs:USER&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= Filesystem service &amp;quot;fs:USER&amp;quot; =&lt;br /&gt;
You can at most have 32 fs archive handles.&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;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] accessinfo bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| &lt;br /&gt;
| Dummy1&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| &lt;br /&gt;
| Control&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010002&lt;br /&gt;
| &lt;br /&gt;
| [[FS:Initialize|Initialize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080201C2&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenFile|OpenFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030204&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenFileDirectly|OpenFileDirectly]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040142&lt;br /&gt;
| &lt;br /&gt;
| [[FS:DeleteFile|DeleteFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08050244&lt;br /&gt;
| &lt;br /&gt;
| RenameFile&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
| &lt;br /&gt;
| DeleteDirectory&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
| &lt;br /&gt;
| DeleteDirectoryRecursively&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
| &lt;br /&gt;
| CreateFile&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090182&lt;br /&gt;
| &lt;br /&gt;
| [[FS:CreateDirectory|CreateDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0244&lt;br /&gt;
| &lt;br /&gt;
| RenameDirectory&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0102&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenDirectory|OpenDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C00C2&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenArchive|OpenArchive]]&lt;br /&gt;
| Each archive idcode has separate accessinfo bitmasks, if any.&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
| &lt;br /&gt;
| ControlArchive&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080E0080&lt;br /&gt;
| &lt;br /&gt;
| [[FS:CloseArchive|CloseArchive]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080F0180&lt;br /&gt;
| &lt;br /&gt;
| FormatThisUserSaveData&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
| &lt;br /&gt;
| CreateSystemSaveData&lt;br /&gt;
| 0x4, for when the input saveID doesn&#039;t match the exheader saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08110040&lt;br /&gt;
| &lt;br /&gt;
| DeleteSystemSaveData&lt;br /&gt;
| 0x1004, for when the input saveID doesn&#039;t match the exheader saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08120080&lt;br /&gt;
| &lt;br /&gt;
| GetFreeBytes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
| &lt;br /&gt;
| GetCardType&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08140000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetSdmcArchiveResource|GetSdmcArchiveResource]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08150000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetNandArchiveResource|GetNandArchiveResource]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcFatfsError&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcCid&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
| &lt;br /&gt;
| GetNandCid&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcSpeedInfo&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
| &lt;br /&gt;
| GetNandSpeedInfo&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
| &lt;br /&gt;
| GetNandLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
| &lt;br /&gt;
| ClearSdmcLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
| &lt;br /&gt;
| ClearNandLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotIsInserted&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotPowerOn&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotPowerOff&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotGetCardIFPowerStatus&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectCommand&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectCommandWithAddress&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectRead&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectReadWithAddress&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectWrite&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectWriteWithAddress&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectRead_4xIO&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectCpuWriteWithoutVerify&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectSectorEraseWithoutVerify&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082E0040&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetProductInfo|GetProductInfo]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x082F0040&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08300182&lt;br /&gt;
| &lt;br /&gt;
| CreateExtSaveData&lt;br /&gt;
| 0xC, for when the input extdataID doesn&#039;t match the exheader extdataID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08310180&lt;br /&gt;
| &lt;br /&gt;
| CreateSharedExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
| &lt;br /&gt;
| [[FS:ReadExtSaveDataIcon|ReadExtSaveDataIcon]]&lt;br /&gt;
| 0x100D, for when the input extdataID doesn&#039;t match the exheader extdataID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08330082&lt;br /&gt;
| &lt;br /&gt;
| EnumerateExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
| &lt;br /&gt;
| EnumerateSharedExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
| &lt;br /&gt;
| DeleteExtSaveData&lt;br /&gt;
| 0x100D, for when the input extdataID doesn&#039;t match the exheader extdataID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08360080&lt;br /&gt;
| &lt;br /&gt;
| DeleteSharedExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
| &lt;br /&gt;
| SetCardSpiBaudRate&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
| &lt;br /&gt;
| SetCardSpiBusMode&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
| &lt;br /&gt;
| SendInitializeInfoTo9&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
| &lt;br /&gt;
| GetSpecialContentIndex&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
| &lt;br /&gt;
| GetLegacyRomHeader&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
| &lt;br /&gt;
| GetLegacyBannerData&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
| &lt;br /&gt;
| CheckAuthorityToAccessExtSaveData&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
| &lt;br /&gt;
| QueryTotalQuotaSize&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
| &lt;br /&gt;
| GetExtDataBlockSize&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
| &lt;br /&gt;
| AbnegateAccessRight&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
| &lt;br /&gt;
| DeleteSdmcRoot&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
| &lt;br /&gt;
| DeleteAllExtSaveDataOnNand&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08430000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:InitializeCtrFileSystem|InitializeCtrFileSystem]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08440000&lt;br /&gt;
| &lt;br /&gt;
| CreateSeed&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
| &lt;br /&gt;
| GetFormatInfo&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
| &lt;br /&gt;
| GetLegacyRomHeader2&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
| &lt;br /&gt;
| FormatCtrCardUserSaveData&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcCtrRootPath&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
| &lt;br /&gt;
| GetArchiveResource&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
| &lt;br /&gt;
| ExportIntegrityVerificationSeed&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
| &lt;br /&gt;
| ImportIntegrityVerificationSeed&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
| &lt;br /&gt;
| FormatSaveData&lt;br /&gt;
| 0x6, in some cases this right isn&#039;t needed however.&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
| &lt;br /&gt;
| GetLegacySubBannerData&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x084E0342&lt;br /&gt;
| &lt;br /&gt;
| [[FS:UpdateSha256Context|UpdateSha256Context]]&lt;br /&gt;
| 0x5&lt;br /&gt;
|-&lt;br /&gt;
| 0x084F0102&lt;br /&gt;
| &lt;br /&gt;
| ReadSpecialFile&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
| &lt;br /&gt;
| GetSpecialFileSize&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| CreateExtSaveData&lt;br /&gt;
| Shared extdata: 0x101005. Regular extdata in certain cases: 0xC.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08520100&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| DeleteExtSaveData (u32 flags, u64 extdataID)&lt;br /&gt;
| Shared extdata: 0x101005. Regular extdata in certain cases: 0x10100D.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08530142&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ReadExtSaveDataIcon&lt;br /&gt;
| 0x10100D(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x085400C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| GetExtDataBlockSize?&lt;br /&gt;
| 0x10100D(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| EnumerateExtSaveData&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| FsCreateSystemSaveData?&lt;br /&gt;
| 0x4(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08570080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| DeleteSystemSaveData&lt;br /&gt;
| 0x1004(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08580000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetMovableSedHashedKeyYRandomData?&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetArchivePriority(u64 ID,u32 priority)&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| GetArchivePriority(u64 ID,u32 *priority)&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetCtrCardLatencyParameter&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D0180&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ResetCardCompatibilityParameter&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SwitchCleanupInvalidSaveData&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| EnumerateSystemSaveData&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| InitializeWithSdkVersion&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetPriority&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| GetPriority&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| Obsoleted_4_0_GetNandInfo Stubbed, this returns an error.&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| SetSaveDataSecureValue, this is used with [[Anti Savegame Restore]].&lt;br /&gt;
| 0x121004(in certain cases this doesn&#039;t apply however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x086600C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| GetSaveDataSecureValue, this is used with [[Anti Savegame Restore]].&lt;br /&gt;
| 0x121004(in certain cases this doesn&#039;t apply however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x086700C4&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ControlSecureSave&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| GetMediaType, This loads the u8 mediatype for the current application from already initialized state, this u8 was originally loaded from the same data used by [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]. This then writes the u8 to response-word[2]. This is used with [[Anti Savegame Restore]].&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Obsoleted_4_0_GetNandEraseCount Stubbed, this returns an error.&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ReadNandReport This is a wrapper for [[Filesystem_services_PXI|FSPXI]] command 0x00550082.&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0040&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00020004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710100&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 0xC&lt;br /&gt;
|-&lt;br /&gt;
| 0x087201C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00080004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087300C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00080004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00080004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770100&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x087800C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process accessinfo specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn&#039;t have access rights for the command. The exheader accessinfo field is all-zero for most applications. Note that the permissions listed in the above table is for system-version v2.x, therefore permission bit(s) added with newer FIRM may be missing from this.&lt;br /&gt;
&lt;br /&gt;
Each session for fs:USER has separate permissions, initially these are set to all-zero for new fs:USER sessions. The permissions/etc for fs:USER sessions are initialized via [[FS:Initialize]](loaded from the user process exheader).&lt;br /&gt;
&lt;br /&gt;
=File service=&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;
| 0x000100C6&lt;br /&gt;
| Dummy1&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| Control&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| OpenSubFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x080200C2&lt;br /&gt;
| [[FSFile:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030102&lt;br /&gt;
| [[FSFile:Write|Write]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| [[FSFile:GetSize|GetSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08050080&lt;br /&gt;
| [[FSFile:SetSize|SetSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060000&lt;br /&gt;
| GetAttributes&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| SetAttributes&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| SetPriority&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| GetPriority&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| OpenLinkFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Directory service=&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;
| 0x000100C6&lt;br /&gt;
| Dummy1&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| Control&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Filesystem service &amp;quot;fs:LDR&amp;quot; =&lt;br /&gt;
This service is identical to fs:USER, except [[FS:OpenArchive]] archive 0x2345678E can only be accessed with fs:LDR.&lt;br /&gt;
&lt;br /&gt;
= ProgramRegistry service &amp;quot;fs:REG&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;
| 0x000100C6&lt;br /&gt;
| Dummy1&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| Register&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| Unregister&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| GetProgramInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| LoadProgram&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| UnloadProgram&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| CheckHostLoadId&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services_PXI&amp;diff=10025</id>
		<title>Filesystem services PXI</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services_PXI&amp;diff=10025"/>
		<updated>2014-10-01T04:12:49Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header, prior to [[3.0.0-5]]&lt;br /&gt;
!  Command Header, starting with [[3.0.0-5]]&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000101C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| OpenFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020142&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00030244&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| RenameFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040142&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00050202&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, unknown_lo, unknown_hi, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00060182&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00070244&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| RenameDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080102&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| OpenDirectory (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090142&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ReadFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A00C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CalculateFileHashSHA256&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0182&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| WriteFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0104&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetFileSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0100&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SetFileSize (sizelo, sizehi, filehandlelo, filehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0080&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CloseFile (filehandlelo, filehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ReadDirectory (dirhandlelo, dirhandlehi, count, ptrsize, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110080&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CloseDirectory (dirhandlelo, dirhandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenArchive|OpenArchive]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130102&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateExtSaveData? (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140102&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150102&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00160080&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CloseArchive (archivehandlelo, archivehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170080&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ReopenArchive? (archivehandlelo, archivehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardType&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcFatFsError&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcDetected&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcWritable&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0042&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandCid|GetNandCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230042&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardSlotInserted&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOn&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOff&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotGetIfPowerStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommand|CardNorDirectCommand]] (These CardNor commands are used for accessing the raw gamecard flash savedata)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0080&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0082&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0082&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F00C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003000C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00310082&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardNorDirectCpuWriteWithoutVerify&lt;br /&gt;
|-&lt;br /&gt;
| 0x00320040&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00330080&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetProductInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SetCardSpiBaudrate&lt;br /&gt;
|-&lt;br /&gt;
| 0x00350040&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SetCardSpiBusMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360040&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SendInitializeInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370140&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003800C0&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390082&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| EnumerateExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0100&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSpecialContentIndex&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B00C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetLegacyRomHeader&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C00C2&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetLegacyBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400040&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteAllExtSaveDataOnNand&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420000&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateSeed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00430042&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00440040&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetArchiveResource&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450002&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460002&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470082&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| EnumerateSharedExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480102&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetLegacySubBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00490042&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| Initialize (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A00C2&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| OpenSpecialFile? (archivehandlelo, archivehandlehi, size, ptrsize_mul2, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B0102&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| ReadSpecialFile&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x004B0000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FSPXI:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C0040&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetSpecialFileSize&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x004D01C4&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| This is a wrapper for ReadFile. If the first ReadFile call fails, this calls ReadFile again then executes hash-related code.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x004E0204&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| This is a wrapper for WriteFile, this is similar to command 0x004D01C4.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x004F....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| (unknown_u64)&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x00500000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| Stubbed, this only returns value 0.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x0051....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| (unknown_u8)&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x00520042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| (outbuffersize, outbufferptr)&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x00530000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| Unknown, stubbed with [[4.0.0-7]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x0054....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Stubbed with [[4.0.0-7]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0x00550082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ReadNandReport (outbuffersize, u8 mediatype, outbufferptr)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Error-code&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8804478&lt;br /&gt;
| Object doesn&#039;t exist / failed to open object(file). Or: The specified title does not exist in the [[Title_Database|database]].&lt;br /&gt;
|-&lt;br /&gt;
| 0xC88044AB&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMD_BUSY or TMIO_STAT_TXUNDERRUN&lt;br /&gt;
|-&lt;br /&gt;
| 0xC88044AC&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_ILL_FUNC&lt;br /&gt;
|-&lt;br /&gt;
| 0xC92044E6&lt;br /&gt;
| File already opened?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC9204509&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMDTIMEOUT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960454B&lt;br /&gt;
| [[SDMC]]/NAND bus error, when an error-bit in REG_SDSTATUS separate from the above errors is set. This can also indicate that the TWL partition table in the NAND sector0 is invalid, or that the sector signature for sector0 at offset 0x1FE is invalid?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960454C&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_STOPBIT_ERR&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960F401&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit23(0x00800000)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9004588&lt;br /&gt;
| FSPXI/FSUSER: Verification failure for RSA or hashes. FSUSER: Verification failed for [[Savegames|savegame]] AES-MAC.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD900458B&lt;br /&gt;
| FSUSER: A corrupted [[RomFS]] block was read. (hash check fail)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9004676&lt;br /&gt;
| FSUSER: The specified service-command / archive is not accessible, due to the currently used exheader accessinfo not having the required bit(s) set. (This error can also indicate that the required ARM9 access-control mount flag is not enabled, in the exheader for any of the running ARM11 processes)&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E046BE&lt;br /&gt;
| Invalid lowpath. This can also indicate that the specified archive-id does not exist, or that the specified archive-id is not accessible over FSPXI. In certain cases this can also be caused by attempting to open a FSUSER archive where none of the required bit(s) for the archive are set in the user-process exheader accessinfo.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE160F402&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_RXRDY&lt;br /&gt;
|-&lt;br /&gt;
| 0xE160F403&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit28(0x10000000)&lt;br /&gt;
|-&lt;br /&gt;
| 0xE160F404&lt;br /&gt;
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit27(0x08000000)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=10024</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=10024"/>
		<updated>2014-10-01T03:20:27Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* File service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= Filesystem service &amp;quot;fs:USER&amp;quot; =&lt;br /&gt;
You can at most have 32 fs archive handles.&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;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] accessinfo bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| &lt;br /&gt;
| Dummy1&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| &lt;br /&gt;
| Control&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010002&lt;br /&gt;
| &lt;br /&gt;
| [[FS:Initialize|Initialize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080201C2&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenFile|OpenFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030204&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenFileDirectly|OpenFileDirectly]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040142&lt;br /&gt;
| &lt;br /&gt;
| [[FS:DeleteFile|DeleteFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08050244&lt;br /&gt;
| &lt;br /&gt;
| RenameFile&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
| &lt;br /&gt;
| DeleteDirectory&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
| &lt;br /&gt;
| DeleteDirectoryRecursively&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
| &lt;br /&gt;
| CreateFile&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090182&lt;br /&gt;
| &lt;br /&gt;
| [[FS:CreateDirectory|CreateDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0244&lt;br /&gt;
| &lt;br /&gt;
| RenameDirectory&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0102&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenDirectory|OpenDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C00C2&lt;br /&gt;
| &lt;br /&gt;
| [[FS:OpenArchive|OpenArchive]]&lt;br /&gt;
| Each archive idcode has separate accessinfo bitmasks, if any.&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
| &lt;br /&gt;
| ControlArchive&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080E0080&lt;br /&gt;
| &lt;br /&gt;
| [[FS:CloseArchive|CloseArchive]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x080F0180&lt;br /&gt;
| &lt;br /&gt;
| FormatThisUserSaveData&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
| &lt;br /&gt;
| CreateSystemSaveData&lt;br /&gt;
| 0x4, for when the input saveID doesn&#039;t match the exheader saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08110040&lt;br /&gt;
| &lt;br /&gt;
| DeleteSystemSaveData&lt;br /&gt;
| 0x1004, for when the input saveID doesn&#039;t match the exheader saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08120080&lt;br /&gt;
| &lt;br /&gt;
| GetFreeBytes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
| &lt;br /&gt;
| GetCardType&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08140000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetSdmcArchiveResource|GetSdmcArchiveResource]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08150000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetNandArchiveResource|GetNandArchiveResource]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcFatfsError&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcCid&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
| &lt;br /&gt;
| GetNandCid&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcSpeedInfo&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
| &lt;br /&gt;
| GetNandSpeedInfo&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
| &lt;br /&gt;
| GetNandLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
| &lt;br /&gt;
| ClearSdmcLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
| &lt;br /&gt;
| ClearNandLog&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotIsInserted&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotPowerOn&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotPowerOff&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
| &lt;br /&gt;
| CardSlotGetCardIFPowerStatus&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectCommand&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectCommandWithAddress&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectRead&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectReadWithAddress&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectWrite&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectWriteWithAddress&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectRead_4xIO&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectCpuWriteWithoutVerify&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
| &lt;br /&gt;
| CardNorDirectSectorEraseWithoutVerify&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082E0040&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetProductInfo|GetProductInfo]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x082F0040&lt;br /&gt;
| &lt;br /&gt;
| [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08300182&lt;br /&gt;
| &lt;br /&gt;
| CreateExtSaveData&lt;br /&gt;
| 0xC, for when the input extdataID doesn&#039;t match the exheader extdataID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08310180&lt;br /&gt;
| &lt;br /&gt;
| CreateSharedExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
| &lt;br /&gt;
| [[FS:ReadExtSaveDataIcon|ReadExtSaveDataIcon]]&lt;br /&gt;
| 0x100D, for when the input extdataID doesn&#039;t match the exheader extdataID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08330082&lt;br /&gt;
| &lt;br /&gt;
| EnumerateExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
| &lt;br /&gt;
| EnumerateSharedExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
| &lt;br /&gt;
| DeleteExtSaveData&lt;br /&gt;
| 0x100D, for when the input extdataID doesn&#039;t match the exheader extdataID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08360080&lt;br /&gt;
| &lt;br /&gt;
| DeleteSharedExtSaveData&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
| &lt;br /&gt;
| SetCardSpiBaudRate&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
| &lt;br /&gt;
| SetCardSpiBusMode&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
| &lt;br /&gt;
| SendInitializeInfoTo9&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
| &lt;br /&gt;
| GetSpecialContentIndex&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
| &lt;br /&gt;
| GetLegacyRomHeader&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
| &lt;br /&gt;
| GetLegacyBannerData&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
| &lt;br /&gt;
| CheckAuthorityToAccessExtSaveData&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
| &lt;br /&gt;
| QueryTotalQuotaSize&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
| &lt;br /&gt;
| GetExtDataBlockSize&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
| &lt;br /&gt;
| AbnegateAccessRight&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
| &lt;br /&gt;
| DeleteSdmcRoot&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
| &lt;br /&gt;
| DeleteAllExtSaveDataOnNand&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08430000&lt;br /&gt;
| &lt;br /&gt;
| [[FS:InitializeCtrFileSystem|InitializeCtrFileSystem]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08440000&lt;br /&gt;
| &lt;br /&gt;
| CreateSeed&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
| &lt;br /&gt;
| GetFormatInfo&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
| &lt;br /&gt;
| GetLegacyRomHeader2&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
| &lt;br /&gt;
| FormatCtrCardUserSaveData&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
| &lt;br /&gt;
| GetSdmcCtrRootPath&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
| &lt;br /&gt;
| GetArchiveResource&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
| &lt;br /&gt;
| ExportIntegrityVerificationSeed&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
| &lt;br /&gt;
| ImportIntegrityVerificationSeed&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
| &lt;br /&gt;
| FormatSaveData&lt;br /&gt;
| 0x6, in some cases this right isn&#039;t needed however.&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
| &lt;br /&gt;
| GetLegacySubBannerData&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x084E0342&lt;br /&gt;
| &lt;br /&gt;
| [[FS:UpdateSha256Context|UpdateSha256Context]]&lt;br /&gt;
| 0x5&lt;br /&gt;
|-&lt;br /&gt;
| 0x084F0102&lt;br /&gt;
| &lt;br /&gt;
| ReadSpecialFile&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
| &lt;br /&gt;
| GetSpecialFileSize&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| CreateExtSaveData&lt;br /&gt;
| Shared extdata: 0x101005. Regular extdata in certain cases: 0xC.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08520100&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| DeleteExtSaveData (u32 flags, u64 extdataID)&lt;br /&gt;
| Shared extdata: 0x101005. Regular extdata in certain cases: 0x10100D.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08530142&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ReadExtSaveDataIcon&lt;br /&gt;
| 0x10100D(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x085400C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| GetExtDataBlockSize?&lt;br /&gt;
| 0x10100D(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| EnumerateExtSaveData&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| FsCreateSystemSaveData?&lt;br /&gt;
| 0x4(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08570080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| DeleteSystemSaveData&lt;br /&gt;
| 0x1004(this doesn&#039;t apply in certain cases however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08580000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetMovableSedHashedKeyYRandomData?&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetArchivePriority(u64 ID,u32 priority)&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| GetArchivePriority(u64 ID,u32 *priority)&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D0180&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| EnumerateSystemSaveData&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| InitializeWithSdkVersion&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetPriority&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| GetPriority&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Unknown, this is used with [[Anti Savegame Restore]].&lt;br /&gt;
| 0x121004(in certain cases this doesn&#039;t apply however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x086600C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Unknown, this is used with [[Anti Savegame Restore]].&lt;br /&gt;
| 0x121004(in certain cases this doesn&#039;t apply however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x086700C4&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| This loads the u8 mediatype for the current application from already initialized state, this u8 was originally loaded from the same data used by [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]. This then writes the u8 to response-word[2]. This is used with [[Anti Savegame Restore]].&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| This is a wrapper for [[Filesystem_services_PXI|FSPXI]] command 0x00550082.&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0040&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00020004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710100&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 0xC&lt;br /&gt;
|-&lt;br /&gt;
| 0x087201C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00080004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087300C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00080004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00080004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?None?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770100&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x087800C0&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process accessinfo specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn&#039;t have access rights for the command. The exheader accessinfo field is all-zero for most applications. Note that the permissions listed in the above table is for system-version v2.x, therefore permission bit(s) added with newer FIRM may be missing from this.&lt;br /&gt;
&lt;br /&gt;
Each session for fs:USER has separate permissions, initially these are set to all-zero for new fs:USER sessions. The permissions/etc for fs:USER sessions are initialized via [[FS:Initialize]](loaded from the user process exheader).&lt;br /&gt;
&lt;br /&gt;
=File service=&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;
| 0x000100C6&lt;br /&gt;
| Dummy1&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| Control&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| OpenSubFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x080200C2&lt;br /&gt;
| [[FSFile:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030102&lt;br /&gt;
| [[FSFile:Write|Write]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| [[FSFile:GetSize|GetSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08050080&lt;br /&gt;
| [[FSFile:SetSize|SetSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060000&lt;br /&gt;
| GetAttributes&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| SetAttributes&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| SetPriority&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| GetPriority&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| OpenLinkFile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Directory service=&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;
| 0x000100C6&lt;br /&gt;
| Dummy1&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| Control&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Filesystem service &amp;quot;fs:LDR&amp;quot; =&lt;br /&gt;
This service is identical to fs:USER, except [[FS:OpenArchive]] archive 0x2345678E can only be accessed with fs:LDR.&lt;br /&gt;
&lt;br /&gt;
= ProgramRegistry service &amp;quot;fs:REG&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;
| 0x000100C6&lt;br /&gt;
| Dummy1&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| Register&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| Unregister&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| GetProgramInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| LoadProgram&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| UnloadProgram&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| CheckHostLoadId&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=IR_Services&amp;diff=10021</id>
		<title>IR Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=IR_Services&amp;diff=10021"/>
		<updated>2014-09-30T20:36:41Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* IR Service &amp;quot;ir:u&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= IR Service &amp;quot;ir:u&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;
| [[IRU:Initialize|Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[IRU:Shutdown|Shutdown]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| [[IRU:StartSendTransfer|StartSendTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[IRU:WaitSendTransfer|WaitSendTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C2&lt;br /&gt;
| [[IRU:StartRecvTransfer|StartRecvTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[IRU:WaitRecvTransfer|WaitRecvTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[IRU:GetRecvTransferCount|GetRecvTransferCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[IRU:GetSendState|GetSendState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| [[IRU:SetBitRate|SetBitRate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[IRU:GetBitRate|GetBitRate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0040&lt;br /&gt;
| [[IRU:SetIRLEDState|SetIRLEDState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[IRU:GetIRLEDRecvState|GetIRLEDRecvState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| [[IRU:GetSendFinishedEvent|GetSendFinishedEvent]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| [[IRU:GetRecvFinishedEvent|GetRecvFinishedEvent]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| [[IRU:GetTransferState|GetTransferState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| GetErrorStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110040&lt;br /&gt;
| [[IRU:SetSleepModeActive|SetSleepModeActive]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120040&lt;br /&gt;
| [[IRU:SetSleepModeState|SetSleepModeState]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= IR Service &amp;quot;ir:USER&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;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010182&lt;br /&gt;
| &lt;br /&gt;
| InitializeIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| &lt;br /&gt;
| FinalizeIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| &lt;br /&gt;
| ClearReceiveBuffer&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| &lt;br /&gt;
| ClearSendBuffer&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| &lt;br /&gt;
| WaitConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| &lt;br /&gt;
| RequireConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| &lt;br /&gt;
| AutoConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| &lt;br /&gt;
| AnyConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| &lt;br /&gt;
| Disconnect&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| &lt;br /&gt;
| GetReceiveEvent&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| &lt;br /&gt;
| GetSendEvent&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| &lt;br /&gt;
| GetConnectionStatusEvent&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| &lt;br /&gt;
| SendIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| &lt;br /&gt;
| SendIrnopLarge&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| &lt;br /&gt;
| ReceiveIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| &lt;br /&gt;
| ReceiveIrnopLarge&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| &lt;br /&gt;
| GetLatestReceiveErrorResult&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| &lt;br /&gt;
| GetLatestSendErrorResult&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| &lt;br /&gt;
| GetConnectionStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| &lt;br /&gt;
| GetTryingToConnectStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| &lt;br /&gt;
| GetReceiveSizeFreeAndUsed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| &lt;br /&gt;
| GetSendSizeFreeAndUsed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| GetConnectionRole&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| InitializeIrnopShared&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| ReleaseReceivedData&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| SetOwnMachineId&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= IR Service &amp;quot;ir:rst&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;
| [[IRRST:GetHandles|GetHandles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[IRRST:Initialize|Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[IRRST:Shutdown|Shutdown]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| This writes an unknown u8 to index-word cmdreply[2], from data loaded from an I2C device register.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| This writes an unknown u8 from IR-module state to index-word cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| This writes two unknown u8 fields from IR-module state to index-word cmdreply[2] and cmdreply[3].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This service was added with [[8.0.0-18]]. Unlike the other IR services, this uses [[I2C]] deviceid 17(this deviceid isn&#039;t actually handled by the [[8.0.0-18]] I2C module). Therefore, this is probably for the new IR LED for the [[New 3DS]].&lt;br /&gt;
&lt;br /&gt;
=IR Services=&lt;br /&gt;
Only one session(two sessions starting with [[8.0.0-18]]) to any of these services can be open at a time, thus only one/two process(es) can use any of these services at once. These services interface with hardware services gpio::IR and i2c::IR. The i2c::IR service is used for sending/receiving data.&lt;br /&gt;
&lt;br /&gt;
IRU is for regular IR comms. IRUSER uses a custom IR protocol(above the physical layer). Both of these services use IrDA-SIR. The IR hardware seems to only support IrDA-SIR, other physical protocols such as the one for TV-remotes are not supported(going by the datasheet linked [[Hardware|here]] for a different IC at least).&lt;br /&gt;
&lt;br /&gt;
The protocol used with IRUSER involves encryption implemented in software. IRUSER is used for the [[Circle Pad Pro]].&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=IR_Services&amp;diff=10020</id>
		<title>IR Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=IR_Services&amp;diff=10020"/>
		<updated>2014-09-30T20:34:44Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* IR Service &amp;quot;ir:USER&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= IR Service &amp;quot;ir:u&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;
| [[IRU:Initialize|Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[IRU:Shutdown|Shutdown]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| [[IRU:StartSendTransfer|StartSendTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[IRU:WaitSendTransfer|WaitSendTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C2&lt;br /&gt;
| [[IRU:StartRecvTransfer|StartRecvTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[IRU:WaitRecvTransfer|WaitRecvTransfer]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[IRU:GetRecvTransferCount|GetRecvTransferCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[IRU:GetSendState|GetSendState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| [[IRU:SetBitRate|SetBitRate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[IRU:GetBitRate|GetBitRate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0040&lt;br /&gt;
| [[IRU:SetIRLEDState|SetIRLEDState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[IRU:GetIRLEDRecvState|GetIRLEDRecvState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| [[IRU:GetSendFinishedEvent|GetSendFinishedEvent]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| [[IRU:GetRecvFinishedEvent|GetRecvFinishedEvent]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| [[IRU:GetTransferState|GetTransferState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00110040&lt;br /&gt;
| [[IRU:SetSleepModeActive|SetSleepModeActive]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120040&lt;br /&gt;
| [[IRU:SetSleepModeState|SetSleepModeState]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= IR Service &amp;quot;ir:USER&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;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010182&lt;br /&gt;
| &lt;br /&gt;
| InitializeIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| &lt;br /&gt;
| FinalizeIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| &lt;br /&gt;
| ClearReceiveBuffer&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| &lt;br /&gt;
| ClearSendBuffer&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| &lt;br /&gt;
| WaitConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| &lt;br /&gt;
| RequireConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| &lt;br /&gt;
| AutoConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| &lt;br /&gt;
| AnyConnection&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| &lt;br /&gt;
| Disconnect&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| &lt;br /&gt;
| GetReceiveEvent&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| &lt;br /&gt;
| GetSendEvent&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| &lt;br /&gt;
| GetConnectionStatusEvent&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| &lt;br /&gt;
| SendIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| &lt;br /&gt;
| SendIrnopLarge&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| &lt;br /&gt;
| ReceiveIrnop&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| &lt;br /&gt;
| ReceiveIrnopLarge&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| &lt;br /&gt;
| GetLatestReceiveErrorResult&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| &lt;br /&gt;
| GetLatestSendErrorResult&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| &lt;br /&gt;
| GetConnectionStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| &lt;br /&gt;
| GetTryingToConnectStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| &lt;br /&gt;
| GetReceiveSizeFreeAndUsed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| &lt;br /&gt;
| GetSendSizeFreeAndUsed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| GetConnectionRole&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| InitializeIrnopShared&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| ReleaseReceivedData&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| Unknown, &amp;gt;[[2.0.0-2]]&lt;br /&gt;
| SetOwnMachineId&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= IR Service &amp;quot;ir:rst&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;
| [[IRRST:GetHandles|GetHandles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[IRRST:Initialize|Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[IRRST:Shutdown|Shutdown]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| This writes an unknown u8 to index-word cmdreply[2], from data loaded from an I2C device register.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| This writes an unknown u8 from IR-module state to index-word cmdreply[2].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| This writes two unknown u8 fields from IR-module state to index-word cmdreply[2] and cmdreply[3].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This service was added with [[8.0.0-18]]. Unlike the other IR services, this uses [[I2C]] deviceid 17(this deviceid isn&#039;t actually handled by the [[8.0.0-18]] I2C module). Therefore, this is probably for the new IR LED for the [[New 3DS]].&lt;br /&gt;
&lt;br /&gt;
=IR Services=&lt;br /&gt;
Only one session(two sessions starting with [[8.0.0-18]]) to any of these services can be open at a time, thus only one/two process(es) can use any of these services at once. These services interface with hardware services gpio::IR and i2c::IR. The i2c::IR service is used for sending/receiving data.&lt;br /&gt;
&lt;br /&gt;
IRU is for regular IR comms. IRUSER uses a custom IR protocol(above the physical layer). Both of these services use IrDA-SIR. The IR hardware seems to only support IrDA-SIR, other physical protocols such as the one for TV-remotes are not supported(going by the datasheet linked [[Hardware|here]] for a different IC at least).&lt;br /&gt;
&lt;br /&gt;
The protocol used with IRUSER involves encryption implemented in software. IRUSER is used for the [[Circle Pad Pro]].&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Registers&amp;diff=9394</id>
		<title>I2C Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Registers&amp;diff=9394"/>
		<updated>2014-07-25T04:15:17Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Device 13 */&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;
!  NAME&lt;br /&gt;
!  PHYSICAL ADDRESS&lt;br /&gt;
!  PROCESS ADDRESS&lt;br /&gt;
!  WIDTH&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C1DATA&lt;br /&gt;
| 0x10161000&lt;br /&gt;
| 0x1EC61000&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C1CNT&lt;br /&gt;
| 0x10161001&lt;br /&gt;
| 0x1EC61001&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C1CNTEX&lt;br /&gt;
| 0x10161002&lt;br /&gt;
| 0x1EC61002&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C1SCL&lt;br /&gt;
| 0x10161004&lt;br /&gt;
| 0x1EC61004&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C2DATA&lt;br /&gt;
| 0x10144000&lt;br /&gt;
| 0x1EC44000&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C2CNT&lt;br /&gt;
| 0x10144001&lt;br /&gt;
| 0x1EC44001&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C2CNTEX&lt;br /&gt;
| 0x10144002&lt;br /&gt;
| 0x1EC44002&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C2SCL&lt;br /&gt;
| 0x10144004&lt;br /&gt;
| 0x1EC44004&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C3DATA&lt;br /&gt;
| 0x10148000&lt;br /&gt;
| 0x1EC48000&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C3CNT&lt;br /&gt;
| 0x10148001&lt;br /&gt;
| 0x1EC48001&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C3CNTEX&lt;br /&gt;
| 0x10148002&lt;br /&gt;
| 0x1EC48002&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| REG_I2C3SCL&lt;br /&gt;
| 0x10148004&lt;br /&gt;
| 0x1EC48004&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== I2C Devices ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!   Device id&lt;br /&gt;
!   Device bus id&lt;br /&gt;
!   Device address&lt;br /&gt;
!   Device description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 0x4a&lt;br /&gt;
| Power management?(same device addr as the DSi power-management)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| 0x7a&lt;br /&gt;
| Camera0?(same dev-addr as DSi cam0)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0x78&lt;br /&gt;
| Camera1?(same dev-addr as DSi cam1)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 0x4a&lt;br /&gt;
| MCU&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 2&lt;br /&gt;
| 0x78&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 2&lt;br /&gt;
| 0x2c&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 2&lt;br /&gt;
| 0x2e&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 2&lt;br /&gt;
| 0x40&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 2&lt;br /&gt;
| 0x44&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 3&lt;br /&gt;
| 0xa6&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 3&lt;br /&gt;
| 0xd0&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 3&lt;br /&gt;
| 0xd2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 3&lt;br /&gt;
| 0xa4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 3&lt;br /&gt;
| 0x9a&lt;br /&gt;
| IR&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 3&lt;br /&gt;
| 0xa0&lt;br /&gt;
| eeprom?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Device 3 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  REGISTER&lt;br /&gt;
!  WIDTH&lt;br /&gt;
!  DESCRIPTION &lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| 1&lt;br /&gt;
| Sound volume: 0x0..0x3F.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Writing u8 value 4 here triggers a hardware system reboot. Writing u8 value 8 triggers a shutdown via power-off?&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x23&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x29&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D&lt;br /&gt;
| 0x64&lt;br /&gt;
| This is used for [[MCURTC:SetInfoLEDPattern|controlling]] the notification LED(see [[MCURTC:SetInfoLEDPatternHeader]] as well), when this register is written.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E&lt;br /&gt;
| 1&lt;br /&gt;
| This [[MCURTC:GetInfoLEDStatus|returns]] the notification LED status when read.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x35&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x36&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x37&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x3B&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x41&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x43&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x51&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Device 13 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Raw I2C register address&lt;br /&gt;
!  Internal register address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Description &lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x40&lt;br /&gt;
| RHR / THR (data receive/send FIFO)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| IER&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| FCR/IIR&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| LCR&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| MCR&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| LSR&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x1&lt;br /&gt;
| MSR/TCR&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x7&lt;br /&gt;
| 0x1&lt;br /&gt;
| SPR/TLR&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| TXLVL&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x1&lt;br /&gt;
| RXLVL&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0xA&lt;br /&gt;
| 0x1&lt;br /&gt;
| IODir&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0xB&lt;br /&gt;
| 0x1&lt;br /&gt;
| IOState&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x1&lt;br /&gt;
| IoIntEna&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0xD&lt;br /&gt;
| 0x1&lt;br /&gt;
| reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0xE&lt;br /&gt;
| 0x1&lt;br /&gt;
| IOControl&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0xF&lt;br /&gt;
| 0x1&lt;br /&gt;
| EFCR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See the datasheet linked to on the [[Hardware]] page for reference. From that datasheet, for the structure of the I2C register address u8: &amp;quot;Bit 0 is not used, bits 2:1 select the channel, bits 6:3 select one of the UART internal registers. Bit 7 is not used with the I2C-bus interface, but it is used by the SPI interface to indicate a read or a write operation.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= I2CCNT =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ REG_I2CxCNT&lt;br /&gt;
!  BIT&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| HOLD (0=Last byte of transaction, 1=More bytes coming)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Error flag/ack?&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Read mode related?&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Read mode?&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| IRQ enable?&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Enable?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Application_Manager_Services_PXI&amp;diff=9182</id>
		<title>Application Manager Services PXI</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Application_Manager_Services_PXI&amp;diff=9182"/>
		<updated>2014-06-11T04:12:36Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: /* Errors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleCount|GetTitleCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleList|GetTitleList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030084&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleInfo|GetTitleInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000400C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteTitle|DeleteTitle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleProductCode|GetTitleProductCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000600C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u8, unknown_u64)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u8, unknown_u32)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallFIRM|InstallFIRM]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTikBegin&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTikWrite (size, ptr, ptrsize)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTikFinish&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u64)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetTitleAllCount&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetTitleAllList&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTitleBegin (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTitleAbort (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTitleResume (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTmdBegin (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdWrite|InstallTmdWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00160040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTmdFinish (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentBegin|InstallContentBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentWrite|InstallContentWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallContentAbort (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentResume|InstallContentResume]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentFinish|InstallContentFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u8, unknown_u32)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_entrycount, unknown_u8, unknown_u32, ptr, ptrsize)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0084&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleTemporaryInfo|GetTitleTemporaryInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002000C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u8, unknown_u64)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002100C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u8, unknown_u64)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (count, unknown_u8, unknown_u64, ptrsize_count_mul_2, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230104&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (count, unknown_u8, unknown_u64, ptr1size_count_mul_2, ptr1, ptr2size_count_mul_24, ptr2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (count, unknown_u8, unknown_u64, ptrsize_count_mul2, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[1.0.0-0]] &lt;br /&gt;
| GetContentCount (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetContentIds (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270044&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetContentInfoForIds (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTitleFinish (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u8, count, unknown_u8, ptrsize_count_mul_8, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0030....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0031....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0032....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0033....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0034....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0035....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0036....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0037....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0038....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390146&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (size2, size3, unknown_u64, size1, ptr1size_size1, ptr1, ptr2size_size2, ptr2, ptr3size_size3, ptr3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0146&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u64, size1, size2, size3, ptr1size_size1, ptr1, ptr2size_size2, ptr2, ptr3size_size3, ptr3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (size, ptrsize, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x003D0108&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (size1, size2, size3, size4, ptr1size, ptr1, ptr2size, ptr2, ptr3size, ptr3, ptr4size, ptr4)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (size, ptrsize, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| (unknown_u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| FinishInstallToMedia (u8 mediatype)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00420142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallCommit&lt;br /&gt;
|-&lt;br /&gt;
| 0x004301C8&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:VerifyDSiWareFooter|VerifyDSiWareFooter]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004400C4&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450108&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (size1, size3, size2, unknown_u8, ptr1size, ptr1, ptr2size, ptr2, ptr3size, ptr3, ptr4size_size2, ptr4) (DecryptDSiWareData)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460182&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:WriteTWLSavedata|WriteTWLSavedata]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470080&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (unknown_u8, unknown_u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ReloadDBS|ReloadDBS]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00490080&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (unknown_u64)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A0102&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (count, unknown_u64, unknown_u8, ptrsize_count_mul_8, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B0100&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (unknown_u64, unknown_u64)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C0042&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (count, ptrsize_count_mul_24, ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004D0144&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ExportDSiWare|ExportDSiWare]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004E00C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (unknown_u64, unknown_u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004F00C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetDSiWareExportSize|GetDSiWareExportSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00500044&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (count, ptr1size_count_mul_8, ptr1, ptr2size_count_mul_4, ptr2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00510000&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00520040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (unknown_u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00530084&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ValidateDSiWareMovableSedHash|ValidateDSiWareMovableSedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00540000&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x005500C4&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ValidateDSiWareSectionMAC|ValidateDSiWareSectionMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005600C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| (unknown_u64, unknown_u16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570042&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0058....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00590104&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005A0142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005B....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005C0044&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005D0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005E0102&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005F....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00600102&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00610142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00620044&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00630042&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0064....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0065....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0066....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Stubbed starting with [[4.0.0-7]], this only returns zero for the command result-code.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00670082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x006801C2&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0069....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x006A....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x006B0142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x006C....&lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| (u8 [[Mediatypes|Mediatype]], u64 programID)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Error-code&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0802B&lt;br /&gt;
| This indicates the the [[Title_Database|dbs]] image(.db) does not exist, or opening the .db file failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E083FC&lt;br /&gt;
| This error indicates that the title is already installed, with the same title-version as the title being installed?&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08027&lt;br /&gt;
| Invalid title-version, or the title-version of the title being installed is older than the currently installed title-version.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A08004&lt;br /&gt;
| Invalid ticket title version.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08025&lt;br /&gt;
| Invalid NCCH. returned from InstallContentFinish&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A08029&lt;br /&gt;
| Error-type 1&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065&lt;br /&gt;
| Error-type -1&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+1 / 0xD8E08066&lt;br /&gt;
| Error-type -2&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+2 / 0xD8E08067&lt;br /&gt;
| Error-type -3&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+3 / 0xD8E08068&lt;br /&gt;
| Error-type -4&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+4 / 0xD8E08069&lt;br /&gt;
| Error-type -5&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+5 / 0xD8E0806A&lt;br /&gt;
| Error-type -6. Returned when a function returns error -2011: signature check for cert(TMD/TIK/cert-chain, ...) failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+6 / 0xD8E0806B&lt;br /&gt;
| Error-type -7&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+7 / 0xD8E0806C&lt;br /&gt;
| Error-type -8&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+8 / 0xD8E0806D&lt;br /&gt;
| Error-type -9&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+9 / 0xD8E0806E&lt;br /&gt;
| Error-type -10&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+10 / 0xD8E0806F&lt;br /&gt;
| Error-type -11&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+11 / 0xD8E08070&lt;br /&gt;
| Error-type -12&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+12 / 0xD8E08071&lt;br /&gt;
| Error-type -13&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+13 / 0xD8E08072&lt;br /&gt;
| Error-type -14&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A083FA&lt;br /&gt;
| Invalid titleID.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0802C&lt;br /&gt;
| AM module returns this error when the system-title bit is set for the input CTR/TWL titleID-high, for [[AM:DeleteApplicationTitle]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Memory_layout&amp;diff=9169</id>
		<title>Memory layout</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Memory_layout&amp;diff=9169"/>
		<updated>2014-06-01T09:46:28Z</updated>

		<summary type="html">&lt;p&gt;Slashmolder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=ARM11 Physical memory regions =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Address&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10000&lt;br /&gt;
| Bootrom (super secret code/data @ 0x8000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000&lt;br /&gt;
| 0x10000&lt;br /&gt;
| Bootrom mirror&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| ?&lt;br /&gt;
| [[IO]] memory&lt;br /&gt;
|-&lt;br /&gt;
| 0x17E00000&lt;br /&gt;
| 0x2000&lt;br /&gt;
| MPCore private memory region&lt;br /&gt;
|-&lt;br /&gt;
| 0x18000000&lt;br /&gt;
| 0x600000&lt;br /&gt;
| VRAM&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF00000&lt;br /&gt;
| 0x80000&lt;br /&gt;
| DSP memory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF80000&lt;br /&gt;
| 0x80000&lt;br /&gt;
| AXI WRAM&lt;br /&gt;
|-&lt;br /&gt;
| 0x20000000&lt;br /&gt;
| 0x8000000&lt;br /&gt;
| FCRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=ARM9 Physical memory regions =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Address&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000000&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| Instruction TCM, repeating each 0x8000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01FF8000&lt;br /&gt;
| 0x8000&lt;br /&gt;
| Instruction TCM (Accessed by the kernel and process by this address)&lt;br /&gt;
|-&lt;br /&gt;
| 0x07FF8000&lt;br /&gt;
| 0x8000&lt;br /&gt;
| Instruction TCM (Accessed by bootrom by this address)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| ARM9-only internal memory&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| [[IO]] memory&lt;br /&gt;
|-&lt;br /&gt;
| 0x18000000&lt;br /&gt;
| 0x600000&lt;br /&gt;
| VRAM&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF00000&lt;br /&gt;
| 0x80000&lt;br /&gt;
| DSP memory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF80000&lt;br /&gt;
| 0x80000&lt;br /&gt;
| AXI WRAM&lt;br /&gt;
|-&lt;br /&gt;
| 0x20000000&lt;br /&gt;
| 0x8000000&lt;br /&gt;
| FCRAM&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFF00000&lt;br /&gt;
| 0x4000&lt;br /&gt;
| Data TCM (Mapped during bootrom)&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFF0000&lt;br /&gt;
| 0x10000&lt;br /&gt;
| Bootrom, the main region is at +0x8000, which is disabled during system boot.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Memory map by firmware=&lt;br /&gt;
* [[Virtual address mapping FW0B]]&lt;br /&gt;
* [[Virtual address mapping FW1F]]&lt;br /&gt;
* [[Virtual address mapping FW25]]&lt;br /&gt;
* [[Virtual address mapping FW2E]]&lt;br /&gt;
&lt;br /&gt;
* [[Virtual address mapping TWLFIRM04]]&lt;br /&gt;
&lt;br /&gt;
=ARM11 Detailed physical memory map=&lt;br /&gt;
 18000000 - 18600000: VRAM&lt;br /&gt;
 &lt;br /&gt;
 1FF80000 - 1FFAB000: Kernel code&lt;br /&gt;
 1FFAB000 - 1FFF0000: SlabHeap [temporarily contains boot processes]&lt;br /&gt;
 1FFF0000 - 1FFF1000: ?&lt;br /&gt;
 1FFF1000 - 1FFF2000: ?&lt;br /&gt;
 1FFF2000 - 1FFF3000: ?&lt;br /&gt;
 1FFF3000 - 1FFF4000: ?&lt;br /&gt;
 1FFF4000 - 1FFF5000: Exception vectors&lt;br /&gt;
 1FFF5000 - 1FFF5800: Unused?&lt;br /&gt;
 1FFF5800 - 1FFF5C00: 256-entry L2 MMU table for VA FF4xx000&lt;br /&gt;
 1FFF5C00 - 1FFF6000: 256-entry L2 MMU table for VA FF5xx000&lt;br /&gt;
 1FFF6000 - 1FFF6400: 256-entry L2 MMU table for VA FF6xx000&lt;br /&gt;
 1FFF6400 - 1FFF6800: 256-entry L2 MMU table for VA FF7xx000&lt;br /&gt;
 1FFF6800 - 1FFF6C00: 256-entry L2 MMU table for VA FF8xx000&lt;br /&gt;
 1FFF6C00 - 1FFF7000: 256-entry L2 MMU table for VA FF9xx000&lt;br /&gt;
 1FFF7000 - 1FFF7400: 256-entry L2 MMU table for VA FFAxx000&lt;br /&gt;
 1FFF7400 - 1FFF7800: 256-entry L2 MMU table for VA FFBxx000&lt;br /&gt;
 1FFF7800 - 1FFF7C00: MMU table but unused?&lt;br /&gt;
 1FFF7C00 - 1FFF8000: 256-entry L2 MMU table for VA FFFxx000 &lt;br /&gt;
 1FFF8000 - 1FFFC000: 4096-entry L1 MMU table for VA xxx00000 (CPU 0)&lt;br /&gt;
 1FFFC000 - 20000000: 4096-entry L1 MMU table for VA xxx00000 (CPU 1)&lt;br /&gt;
 20000000 - 28000000: Main memory&lt;br /&gt;
&lt;br /&gt;
The entire FCRAM is cleared during NATIVE_FIRM boot. This is probably done by the ARM11 kernel(after loading [[FIRM]] launch parameters from FCRAM)?&lt;br /&gt;
&lt;br /&gt;
== FCRAM layout with the default retail memory-regions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Region&lt;br /&gt;
!  Base address relative to FCRAM+0&lt;br /&gt;
!  Region size&lt;br /&gt;
!  Used memory once [[Home Menu]] finishes loading for system boot, on [[4.5.0-10]]&lt;br /&gt;
!  Used memory with [[Internet Browser]] running instead of [[Home Menu]], on [[4.5.0-10]]&lt;br /&gt;
!  Free memory once [[Home Menu]] finishes loading for system boot, on [[4.5.0-10]]&lt;br /&gt;
!  Free memory with [[Internet Browser]] running instead of [[Home Menu]], on [[4.5.0-10]]&lt;br /&gt;
|-&lt;br /&gt;
| APPLICATION&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x04000000&lt;br /&gt;
| 0x0&lt;br /&gt;
| &lt;br /&gt;
| 0x04000000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| SYSTEM&lt;br /&gt;
| 0x04000000&lt;br /&gt;
| 0x02C00000&lt;br /&gt;
| 0x01488000&lt;br /&gt;
| 0x02A50000&lt;br /&gt;
| 0x01778000&lt;br /&gt;
| 0x001B0000&lt;br /&gt;
|-&lt;br /&gt;
| BASE&lt;br /&gt;
| 0x06C00000&lt;br /&gt;
| 0x01400000&lt;br /&gt;
| 0x01202000&lt;br /&gt;
| 0x01236000&lt;br /&gt;
| 0x001FE000&lt;br /&gt;
| 0x001CA000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=ARM11 Detailed virtual memory map=&lt;br /&gt;
(valid only for FW0B, see [[#Memory map by firmware|Memory map by firmware]] for subsequent versions)&lt;br /&gt;
&lt;br /&gt;
 E8000000 - E8600000: mapped VRAM (18000000 - 18600000)&lt;br /&gt;
 &lt;br /&gt;
 EFF00000 - F0000000: mapped Internal memory (1FF00000 - 20000000)&lt;br /&gt;
 F0000000 - F8000000: mapped Main memory&lt;br /&gt;
 &lt;br /&gt;
 FF401000 - FF402000: mapped ? (27FC7000 - 27FC8000)&lt;br /&gt;
 &lt;br /&gt;
 FF403000 - FF404000: mapped ? (27FC2000 - 27FC3000)&lt;br /&gt;
 &lt;br /&gt;
 FF405000 - FF406000: mapped ? (27FBB000 - 27FBC000)&lt;br /&gt;
 &lt;br /&gt;
 FF407000 - FF408000: mapped ? (27FB3000 - 27FB4000)&lt;br /&gt;
 &lt;br /&gt;
 FF409000 - FF40A000: mapped ? (27F8E000 - 27F8F000)&lt;br /&gt;
 &lt;br /&gt;
 FFF00000 - FFF45000: mapped SlabHeap &lt;br /&gt;
 &lt;br /&gt;
 FFF60000 - FFF8B000: mapped Kernel code&lt;br /&gt;
 &lt;br /&gt;
 FFFCC000 - FFFCD000: mapped IO [[I2C|I2C]] second bus (10144000 - 10145000)&lt;br /&gt;
 &lt;br /&gt;
 FFFCE000 - FFFCF000: mapped IO PDC([[LCD]]) (10400000 - 10401000)&lt;br /&gt;
 &lt;br /&gt;
 FFFD0000 - FFFD1000: mapped IO PDN (10141000 - 10142000)&lt;br /&gt;
 &lt;br /&gt;
 FFFD2000 - FFFD3000: mapped IO PXI (10163000 - 10164000)&lt;br /&gt;
 &lt;br /&gt;
 FFFD4000 - FFFD5000: mapped IO PAD (10146000 - 10147000)&lt;br /&gt;
 &lt;br /&gt;
 FFFD6000 - FFFD7000: mapped IO LCD (10202000 - 10203000)&lt;br /&gt;
 &lt;br /&gt;
 FFFD8000 - FFFD9000: mapped IO DSP (10140000 - 10141000)&lt;br /&gt;
 &lt;br /&gt;
 FFFDA000 - FFFDB000: mapped IO XDMA (10200000 - 10201000)&lt;br /&gt;
 &lt;br /&gt;
 FFFDC000 - FFFE0000: mapped ? (1FFF8000 - 1FFFC000)&lt;br /&gt;
 &lt;br /&gt;
 FFFE1000 - FFFE2000: mapped ? (1FFF0000 - 1FFF1000)&lt;br /&gt;
 &lt;br /&gt;
 FFFE3000 - FFFE4000: mapped ? (1FFF2000 - 1FFF3000)&lt;br /&gt;
 &lt;br /&gt;
 FFFE5000 - FFFE9000: mapped L1 MMU table for VA xxx00000&lt;br /&gt;
 &lt;br /&gt;
 FFFEA000 - FFFEB000: mapped ? (1FFF1000 - 1FFF2000)&lt;br /&gt;
 &lt;br /&gt;
 FFFEC000 - FFFED000: mapped ? (1FFF3000 - 1FFF4000)&lt;br /&gt;
 &lt;br /&gt;
 FFFEE000 - FFFF0000: mapped IO IRQ (17E00000 - 17E02000)&lt;br /&gt;
 &lt;br /&gt;
 FFFF0000 - FFFF1000: mapped Exception vectors&lt;br /&gt;
 &lt;br /&gt;
 FFFF2000 - FFFF6000: mapped L1 MMU table for VA xxx00000&lt;br /&gt;
 &lt;br /&gt;
 FFFF7000 - FFFF8000: mapped ? (1FFF1000 - 1FFF2000)&lt;br /&gt;
 &lt;br /&gt;
 FFFF9000 - FFFFA000: mapped ? (1FFF3000 - 1FFF4000)&lt;br /&gt;
 &lt;br /&gt;
 FFFFB000 - FFFFE000: mapped L2 MMU tables (1FFF5000 - 1FFF8000)&lt;br /&gt;
&lt;br /&gt;
==0xFF4XX000==&lt;br /&gt;
Each [[KThread|thread]] is allocated a 0x1000-byte page in this region: the first page at 0xFF401000 is for the first created thread, 0xFF403000 for the second thread. This region is used to store the SVC-mode stack for the thread, and thread context data used for context switching. When the IRQ handler, prefetch/data abort handlers, and undefined instruction handler are entered where the SPSR-mode=user, these handlers then store LR+SPSR for the current mode on the SVC-mode stack, then these handlers switch to SVC-mode.&lt;br /&gt;
&lt;br /&gt;
This page does not contain a dedicated block for storing R0-PC(etc). For user-mode, the user-mode regs are instead saved on the SVC-mode stack when IRQs such as timers for context switching are triggered.&lt;br /&gt;
&lt;br /&gt;
Structure of this page, relative to page_endaddr-0xC8:&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;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| &lt;br /&gt;
| SVC-mode stack-top&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x28&lt;br /&gt;
| SVC-mode saved registers, stored/loaded during context switches: R4-R9, SL, FP, SP, LR. After loading these registers, the context switch code will jump to the loaded LR.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 4&lt;br /&gt;
| fpexc from vmrs, used during context switches with the above saved registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For NATIVE_FIRM the memory pages for this region are located in FCRAM, however for TWL_FIRM these are located in AXI WRAM. For TWL_FIRM v6704 the first thread&#039;s page for this region is located at physical address 0x1FF93000, the next one at 0x1FF92000, etc.&lt;br /&gt;
&lt;br /&gt;
=ARM11 User-land memory regions=&lt;br /&gt;
==NATIVE_FIRM/SAFE_MODE_FIRM Userland Memory==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Virtual Address Base&lt;br /&gt;
!  Physical Address Base&lt;br /&gt;
!  Region Max Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000 / 0x14000000&lt;br /&gt;
| &lt;br /&gt;
| 0x03F00000&lt;br /&gt;
| The [[ExeFS]]:/.code is loaded here, executables must be loaded to the 0x00100000 region when the exheader &amp;quot;special memory&amp;quot; flag is clear. The 0x03F00000-byte size restriction only applies when this flag is clear. Executables are usually loaded to 0x14000000 when the exheader &amp;quot;special memory&amp;quot; flag is set, however this address can be arbitrary.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| For applications: FCRAM + GSP heap size&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| Heap mapped by [[SVC|ControlMemory]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000000-StackSize&lt;br /&gt;
| .bss physical address - total stack pages&lt;br /&gt;
| StackSize from process exheader&lt;br /&gt;
| Stack for the main-thread, initialized by the ARM11 kernel. The StackSize from the exheader is usually 0x4000, therefore the stack-bottom is usually 0x0FFFC000. The stack for the other threads is normally located in the process .data section however this can be arbitrary.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| &lt;br /&gt;
| 0x04000000&lt;br /&gt;
| [[SVC|Shared]] memory&lt;br /&gt;
|-&lt;br /&gt;
| 0x14000000&lt;br /&gt;
| FCRAM+0&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| Can be mapped by [[SVC|ControlMemory]], this is used for processes&#039; [[SVC|LINEAR]]/GSP heap.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1EC00000&lt;br /&gt;
| 0x10100000&lt;br /&gt;
| 0x01000000&lt;br /&gt;
| [[IO]] registers, the mapped IO pages which each process can access is specified in the [[NCCH#CXI|CXI]] exheader.(Applications normally don&#039;t have access to registers in this range)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F000000&lt;br /&gt;
| 0x18000000&lt;br /&gt;
| 0x00600000&lt;br /&gt;
| VRAM, access to this is specified by the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF00000&lt;br /&gt;
| 0x1FF00000&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| DSP memory, access to this is specified by the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF80000&lt;br /&gt;
| FCRAM memory page allocated by the ARM11 kernel.&lt;br /&gt;
| 0x1000&lt;br /&gt;
| [[Configuration Memory]], all processes have read-only access to this.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF81000&lt;br /&gt;
| FCRAM memory page allocated by the ARM11 kernel.&lt;br /&gt;
| 0x1000&lt;br /&gt;
| [[Configuration Memory|Shared]] page, all processes have read-access to this. Write access to this is specified by the exheader &amp;quot;Shared page writing&amp;quot; kernel flag.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All executable pages are read-only, and data pages have the execute-never permission set. Normally .text from the loaded ExeFS:/.code is the only mapped executable memory. Executable [[RO Services|CROs]] can be loaded into memory, once loaded the CRO .text section memory page permissions are changed via [[SVC|ControlProcessMemory]] from RW- to R-X. The address and size of each ExeFS:/.code section is stored in the exheader, the permissions for each section is: .text R-X, .rodata R--, .data RW-, and .bss RW-. The loaded .code is mapped to the addresses specified in the exheader by the ARM11 kernel. The stack permissions is initialized by the ARM11 kernel: RW-. The heap permissions is normally RW-.&lt;br /&gt;
&lt;br /&gt;
All userland memory is mapped with RW permissions for privileged-mode. However, normally the ARM11 kernel only uses userland read/write instructions(or checks that the memory can be written from userland first) for accessing memory specified by [[SVC|SVCs]].&lt;br /&gt;
&lt;br /&gt;
The virtual memory located below 0x20000000 is process-unique, processes can&#039;t directly access memory for other processes. The virtual memory starting at 0x20000000 is only accessible in privileged-mode. When service [[Services API|commands]] are used, the kernel maps memory in the destination process for input/output buffers, where the addresses in the command received by the process is replaced by this mapped memory. When this is an input buffer, the buffer data is copied to the mapped memory. When this is an output buffer, the data stored in the mapped memory is copied to the destination buffer specified in the command.&lt;br /&gt;
&lt;br /&gt;
The physical address which memory for the application memory-type is mapped to begins at FCRAM+0, the total memory allocated for this memory-type is stored in [[Configuration_Memory]]. Applications&#039; .text + .rodata + .data under the application memory-type is mapped at FCRAM + APPMEMALLOC - (aligned page-size for .text + .rodata + .data). The application .bss is mapped at CODEADDR - .bss size aligned down to the page size.&lt;br /&gt;
&lt;br /&gt;
==TWL_FIRM Userland Memory==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Virtual Address Base&lt;br /&gt;
!  Physical Address Base&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x1FFAB000 (with newer TWL_FIRM such as v6704 this is located at 0x1FFAC000)&lt;br /&gt;
| 0x00055000&lt;br /&gt;
| Code + .(ro)data copied from the process 0x00300000 region is located here(.bss is located here as well).&lt;br /&gt;
|-&lt;br /&gt;
| 0x00155000&lt;br /&gt;
| 0x18555000&lt;br /&gt;
| 0x000AB000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000&lt;br /&gt;
| 0x18500000&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00300000&lt;br /&gt;
| 0x24000000&lt;br /&gt;
| 0x04000000&lt;br /&gt;
| The beginning of the ARM11 process .text is located here.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| 0x20000000&lt;br /&gt;
| 0x07E00000&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1EC00000&lt;br /&gt;
| 0x10100000&lt;br /&gt;
| 0x00400000&lt;br /&gt;
| [[IO]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F000000&lt;br /&gt;
| 0x18000000&lt;br /&gt;
| 0x00600000&lt;br /&gt;
| VRAM&lt;br /&gt;
|-&lt;br /&gt;
| 0x1FF00000&lt;br /&gt;
| 0x1FF00000&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| This is mapped to the DSP memory.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above regions are mapped by the ARM11 kernel. Later when the ARM11 process uses [[SVC|svcKernelSetState]] with type4, the kernel unmaps(?) the following regions: 0x00300000..0x04300000, 0x08000000..0x0FE00000, and 0x10000000..0xF8000000.&lt;br /&gt;
&lt;br /&gt;
=== Detailed TWL_FIRM ARM11 Memory ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Process Virtual Address&lt;br /&gt;
!  Physical Address&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x08000000&lt;br /&gt;
| 0x20000000&lt;br /&gt;
| 0x01000000*4&lt;br /&gt;
| DS(i) 0x02000000 RAM. Vaddr = (DSRAMOffset*4) + 0x08000000, where DSRAMOffset is DSRAMAddr-0x02000000.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0FC00000&lt;br /&gt;
| 0x27C00000&lt;br /&gt;
| &lt;br /&gt;
| Loaded SRL binary, initially the dev DSi launcher SRL is located here(copied here by the ARM11 process).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0FD00000&lt;br /&gt;
| 0x27D00000&lt;br /&gt;
| &lt;br /&gt;
| The data located here is copied to here by the ARM11 process. The data located here is a TWL NAND [http://dsibrew.org/wiki/Bootloader bootloader] image, using the same format+encryption/verification methods as the DSi NAND bootloader(stage2). The keyX for this bootloader keyslot is initially set to the retail DSi key-data, however when TWL_FIRM is launched this keyX key-data is replaced with a separate keyX. TWL_FIRM can use either the retail DSi bootloader RSA-1024 modulo, or a seperate modulo: normally only the latter is used(the former is only used when loading the image from FS instead of FCRAM). When using the image from FCRAM(default code-path), TWL_FIRM will not calculate+check the hashes for the bootloader code binaries(this is done when loading from FS however).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0FDF7000&lt;br /&gt;
| 0x27DF7000&lt;br /&gt;
| 0x1000&lt;br /&gt;
| SRL header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= System memory details  =&lt;br /&gt;
 0xFFFF9000 Pointer to the current KThread instance&lt;br /&gt;
 0xFFFF9004 Pointer to the current KProcess instance&lt;br /&gt;
 0xFFFF9010 Pointer a KThread (not sure what its role is)&lt;br /&gt;
&lt;br /&gt;
= Handles =&lt;br /&gt;
The handle 0xFFFF8001 is a reference to the current KProcess.&lt;br /&gt;
&lt;br /&gt;
= IO Process/Kernel virtual addressing equivalence = &lt;br /&gt;
It seems an IO register&#039;s process virtual address can be calculated by adding 0xEB00000 to its physical address.&lt;br /&gt;
&lt;br /&gt;
= VRAM Map While Running System Applets =&lt;br /&gt;
*0x1E6000-0x22C500 -- top screen 3D left framebuffer 0(240x400x3) (The &amp;quot;3D right first-framebuf&amp;quot; addr stored in the LCD register is set to this, when the 3D is set to &amp;quot;off&amp;quot;)&lt;br /&gt;
*0x22C800-0x272D00 -- top screen 3D left framebuffer 1(240x400x3)&lt;br /&gt;
*0x273000-0x2B9500 -- top screen 3D right framebuffer 0(240x400x3)&lt;br /&gt;
*0x2B9800-0x2FFD00 -- top screen 3D right framebuffer 1(240x400x3)&lt;br /&gt;
*0x48F000-0x4C7400 -- bottom screen framebuffer 0(240x320x3)&lt;br /&gt;
*0x4C7800-0x4FF800 -- bottom screen framebuffer 1(240x320x3)&lt;br /&gt;
&lt;br /&gt;
These LCD framebuffer addresses are not changed by the system when launching regular applications, the application itself handles that if needed.&lt;/div&gt;</summary>
		<author><name>Slashmolder</name></author>
	</entry>
</feed>