<?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=Normmatt</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=Normmatt"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Normmatt"/>
	<updated>2026-04-24T23:10:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Title_list&amp;diff=17162</id>
		<title>Title list</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Title_list&amp;diff=17162"/>
		<updated>2016-04-24T21:07:28Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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 [https://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]], [[9.6.0-24|v10245]], [[10.6.0-31|v10256]]&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|v8202]], [[9.6.0-24|v9220]]&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|v8203]], [[9.6.0-24|v9221]]&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]], [[10.6.0-31|v2080]]&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]]), [[10.6.0-31|v4112]]&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]], [[10.6.0-31|3104]]&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]], [[10.6.0-31|v2064]]&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]], [[9.5.0-22|v16384]], [[9.6.0-24|v17421]], [[9.7.0-25|v18432]], [[10.0.0-27|v19465]], [[10.4.0-29|v20483]], [[10.7.0-32|v21504]]&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|v13320]], [[9.3.0-21|v15366]], [[9.5.0-22|v16384]], [[9.6.0-24|v17421]], [[9.7.0-25|v18432]], [[10.0.0-27|v19465]], [[10.4.0-29|v20482]], [[10.7.0-32|v21505]]&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|v13321]], [[9.3.0-21|v15366]], [[9.5.0-22|v16384]], [[9.6.0-24|v17422]], [[9.7.0-25|v18432]], [[10.0.0-27|v19465]], [[10.4.0-29|v20482]], [[10.7.0-32|v21506]]&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]], [[9.5.0-22|v16384]], [[9.6.0-24|v17420]], [[9.7.0-25|v18432]], [[10.0.0-27|v19465]], [[10.4.0-29|v20482]]&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]], [[9.5.0-22|v16384]], [[9.6.0-24|v17421]], [[9.7.0-25|v18432]], [[10.0.0-27|v19465]]&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]] (CARDBOARD)&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]], [[9.6.0-24|v6154]]&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]], [[9.6.0-24|v6155]]&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]], [[9.6.0-24|v6156]]&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;
| 2002D700&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]], [[9.6.0-24|v50]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v1]], [[9.3.0-21|v17]], [[9.6.0-24|v34]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v1]], [[9.3.0-21|v18]], [[9.6.0-24|v33]]&lt;br /&gt;
| N/A&lt;br /&gt;
| [[9.6.0-24|v2]]&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;
| 2002D800&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;
| [[9.6.0-24|v2]]&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;
| 2002D900&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;
| [[9.6.0-24|v2]]&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;
| 2002DA00&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;
| [[9.6.0-24|v1]]&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]], [[9.5.0-23|v1024]], [[10.5.0-30|v2048]]&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]], [[9.6.0-24|v5120]]&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]], [[9.6.0-24|v1026]]&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;
!  CHN TitleIDLow&lt;br /&gt;
!  KOR TitleIDLow&lt;br /&gt;
!  TWN 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;
| 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;
| 0000a102&lt;br /&gt;
| 0000a902&lt;br /&gt;
| 0000b102&lt;br /&gt;
| [[Home Menu|Home Menu]] (menu)&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[2.1.0-3|v2049]], [[2.2.0-X|v3075]], [[3.0.0-5|v4111]], [[4.0.0-7|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|v13313]], [[9.1.0-20J|v14336]], [[9.2.0-20|v15360]], [[9.3.0-21|v16402]], [[9.4.0-21|v17408]], [[9.5.0-22|v18432]], [[9.6.0-24|v19476]], [[9.7.0-25|v20487]], [[9.8.0-25|v22528]], [[10.1.0-27|v23552]], [[10.2.0-28|v24576]], [[10.3.0-28|v25600]], [[10.4.0-29|v26626]], [[10.6.0-31|v27648]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[2.1.0-3|v2049]], [[2.2.0-X|v3075]], [[3.0.0-5|v4111]], [[4.0.0-7|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]], [[9.5.0-22|v15360]], [[9.6.0-24|v16404]], [[9.7.0-25|v17415]], [[9.8.0-25|v19456]], [[9.9.0-26|v20480]], [[10.1.0-27|v21504]], [[10.2.0-28|v22528]], [[10.3.0-28|v23552]], [[10.4.0-29|v24578]], [[10.6.0-31|v25600]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[2.1.0-3|v2049]], [[2.2.0-X|v3075]], [[3.0.0-5|v4111]], [[4.0.0-7|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]], [[9.5.0-22|v15360]], [[9.6.0-24|v16404]], [[9.7.0-25|v17415]], [[9.8.0-25|v19456]], [[10.1.0-27|v20480]], [[10.2.0-28|v21504]], [[10.3.0-28|v22528]], [[10.4.0-29|v23554]], [[10.6.0-31|v24576]]&lt;br /&gt;
|-&lt;br /&gt;
| 00008402&lt;br /&gt;
| 00009002&lt;br /&gt;
| 00009902&lt;br /&gt;
| 0000A202&lt;br /&gt;
| 0000AA02&lt;br /&gt;
| 0000B202&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;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&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;
| 0000A402&lt;br /&gt;
| 0000AC02&lt;br /&gt;
| 0000B402&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;
| Same as JPN&lt;br /&gt;
|-&lt;br /&gt;
| 00008702&lt;br /&gt;
| 00009302&lt;br /&gt;
| 00009C02&lt;br /&gt;
| 0000A502&lt;br /&gt;
| 0000AD02&lt;br /&gt;
| 0000B502&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;
| 0000A602&lt;br /&gt;
| 0000AE02&lt;br /&gt;
| 0000B602&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]], [[9.5.0-23|v5121]], [[9.9.0-26|v6149]], [[10.2.0-28|v7168]], [[10.6.0-31|v8192]], [[10.7.0-32|v9232]]&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;
| ?&lt;br /&gt;
| 2000AE02&lt;br /&gt;
| N/A&lt;br /&gt;
| [[New_3DS]] [[Internet Browser]] (SKATER)&lt;br /&gt;
| [[8.1.0-0_New3DS|v10]], [[9.3.0-21|v1027]], [[9.6.0-24|v2051]], [[9.9.0-26|v3077]], [[10.2.0-28|v4096]], [[10.4.0-29|v5121]], [[10.6.0-31|v6144]], [[10.7.0-32|v7184]]&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;
| 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;
| 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;
| ?&lt;br /&gt;
| 20008A03&lt;br /&gt;
| N/A&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;
| 0000A702&lt;br /&gt;
| 0000AE02&lt;br /&gt;
| 0000B702&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;
| 0000A802&lt;br /&gt;
| 0000B002&lt;br /&gt;
| 0000B802&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;
| 0000D802&lt;br /&gt;
| 0000DE02&lt;br /&gt;
| 0000E402&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;
| 0000D803&lt;br /&gt;
| 0000DE03&lt;br /&gt;
| 0000E403&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;
| ?&lt;br /&gt;
| 2000DE03&lt;br /&gt;
| N/A&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;
| 0000D902&lt;br /&gt;
| 0000DF02&lt;br /&gt;
| 0000E502&lt;br /&gt;
| appletEd (MiiSelector)&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;
| 0000DB02&lt;br /&gt;
| 0000E102&lt;br /&gt;
| 0000E702&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;
| 0000DC02&lt;br /&gt;
| 0000E202&lt;br /&gt;
| 0000E802&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;
| 0000CF02&lt;br /&gt;
| 0000CF02&lt;br /&gt;
| 0000CF02&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]], [[9.6.0-24|v6145]]&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;
| 0000CF03&lt;br /&gt;
| 0000CF03&lt;br /&gt;
| 0000CF03&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;
| ?&lt;br /&gt;
| 2000CF03&lt;br /&gt;
| N/A&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;
| 0000D502&lt;br /&gt;
| 0000D502&lt;br /&gt;
| 0000D502&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;
| N/A&lt;br /&gt;
| 0000E302&lt;br /&gt;
| 0000E902&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]], [[9.6.0-24|v10247]], [[9.8.0-25|v11264]], [[10.0.0-27|v12293]], [[10.1.0-27|v13312]], [[10.3.0-28|v14337]], [[10.4.0-29|v15360]], [[10.7.0-32|v16384]]&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;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&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]], [[9.6.0-24|v4096]]&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;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| Cabinet ([[amiibo Settings]])&lt;br /&gt;
| [[9.3.0-21|v7]], [[9.6.0-24|v1031]]&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, see [[NS_and_APT_Services|here]] for details.&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;
| Only exists for dev-units.&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]], [[9.6.0-24|v5122]]&lt;br /&gt;
|-&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| 00010502&lt;br /&gt;
| Only exists for dev-units.&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, [[10.5.0-30|v1024]]&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011202&lt;br /&gt;
| &amp;quot;NL/NL&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011302&lt;br /&gt;
| &amp;quot;EN/GB&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 00011402&lt;br /&gt;
| &lt;br /&gt;
| &amp;quot;EN/US&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011502&lt;br /&gt;
| &amp;quot;FR/FR/regular&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 00011602&lt;br /&gt;
| &lt;br /&gt;
| &amp;quot;FR/CA/regular&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011702&lt;br /&gt;
| &amp;quot;DE/regular&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011802&lt;br /&gt;
| &amp;quot;IT/IT&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| 00011902&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &amp;quot;JA_small/32&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011B02&lt;br /&gt;
| &amp;quot;PT/PT/regular&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011C02&lt;br /&gt;
| &amp;quot;RU/regular&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 00011D02&lt;br /&gt;
| 00011D02&lt;br /&gt;
| &amp;quot;ES/ES&amp;quot; dictionary.&lt;br /&gt;
| v0&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 00011E02&lt;br /&gt;
| &lt;br /&gt;
| &amp;quot;PT/BR/regular&amp;quot; dictionary.&lt;br /&gt;
| v0&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]], [[9.6.0-24|v11269]], [[10.0.0-27|v12289]], [[10.4.0-29|v13312]], [[10.7.0-32|v13313]]&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]], [[9.9.0-26|v6144]], [[10.4.0-29|v7168]]&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;
=== 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]], [[9.6.0-24|v8192]]&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]], [[9.6.0-24|v16386]], [[10.0.0-27|v17409]], [[10.4.0-29|18432]]&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]], [[9.5.0-22|v352]], [[9.5.0-23|v368]], [[9.6.0-24|v384]], [[9.7.0-25|v400]], [[9.9.0-26|v416]], [[10.0.0-27|v432]], [[10.2.0-28|v448]], [[10.4.0-29|v464]], [[10.5.0-30|v480]], [[10.6.0-31|v496]], [[10.7.0-32|v512]]&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]], [[9.5.0-23|v131]], [[9.9.0-26|v132]]&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]], [[9.5.0-22|v272]], [[9.5.0-23|v288]], [[9.6.0-24|v304]], [[9.7.0-25|v320]], [[9.9.0-26|v336]], [[10.0.0-27|v352]], [[10.2.0-28|v368]]&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]], [[9.5.0-22|v288]], [[9.5.0-23|v304]], [[9.6.0-24|v320]], [[9.7.0-25|v336]], [[9.9.0-26|v352]], [[10.0.0-27|v368]], [[10.2.0-28|v384]]&lt;br /&gt;
|-&lt;br /&gt;
| 20016102&lt;br /&gt;
| 20016202&lt;br /&gt;
| 20016302&lt;br /&gt;
| N/A&lt;br /&gt;
| 20016502&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]], [[9.5.0-22|v352]], [[9.5.0-22|v352]], [[9.5.0-23|v368]], [[9.6.0-24|v384]], [[9.7.0-25|v400]], [[9.9.0-26|v416]], [[10.0.0-27|v432]], [[10.2.0-28|v448]], [[10.4.0-29|v464]], [[10.5.0-30|v480]], [[10.6.0-31|v496]], [[10.7.0-32|v512]]&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| [[9.6.0-24|v320]], [[9.7.0-25|v336]], [[9.9.0-26|v352]], [[10.0.0-27|v368]], [[10.2.0-28|v384]]&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]], [[9.5.0-22|v9296]], [[9.6.0-24|v9319]], [[9.7.0-25|v9328]], [[9.8.0-25|v9344]], [[9.9.0-26|v9360]], [[10.0.0-27|v10240]], [[10.1.0-27|v10256]], [[10.2.0-28|v10272]], [[10.3.0-28|v10288]], [[10.4.0-29|v10304]], [[10.5.0-30|v10320]], [[10.6.0-31|v10336]], [[10.7.0-32|v10352]]&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]], [[9.5.0-22|v9296]], [[9.6.0-24|v9319]], [[9.7.0-25|v9328]], [[9.8.0-25|v9344]], [[9.9.0-26|v9360]], [[10.0.0-27|v10240]], [[10.2.0-28|v10272]]&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;
| [[Services|sm]] (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001003&lt;br /&gt;
| SAFE_MODE [[Services|sm]] (Stored in SAFE_MODE 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;
| 00001103&lt;br /&gt;
| SAFE_MODE [[Filesystem services‎|fs]] (Stored in SAFE_MODE 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;
| 00001203&lt;br /&gt;
| SAFE_MODE [[Process Manager Services|pm]] (Stored in SAFE_MODE NATIVE_FIRM)&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001302&lt;br /&gt;
| [[Loader Services‎|loader]]  (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001303&lt;br /&gt;
| SAFE_MODE [[Loader Services‎|loader]]  (Stored in SAFE_MODE NATIVE_FIRM)&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001402&lt;br /&gt;
| [[PXI Services‎|pxi]]  (Stored in [[FIRM|NATIVE_FIRM]])&lt;br /&gt;
| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 00001403&lt;br /&gt;
| SAFE_MODE [[PXI Services‎|pxi]]  (Stored in SAFE_MODE 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]], [[10.0.0-27|v9217]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001503&lt;br /&gt;
| SAFE_MODE [[Application Manager Services|AM]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001503&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[Application Manager Services|AM]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001602&lt;br /&gt;
| [[Camera Services|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]], [[10.0.0-27|v11265]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001602&lt;br /&gt;
| [[New_3DS]] [[Camera Services|Camera]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v8200]], [[9.0.0-20|v9218]], [[9.3.0-21|v10242]], [[10.0.0-27|v11265]]&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]], [[9.6.0-24|v14342]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001703&lt;br /&gt;
| SAFE_MODE [[Config Services|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 Services|Config]] (cfg)&lt;br /&gt;
| [[8.1.0-0_New3DS|v11265]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001802&lt;br /&gt;
| [[Codec Services|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 Services|Codec]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001803&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[Codec Services|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 Services|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]], [[9.7.0-25|v6145]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001A03&lt;br /&gt;
| SAFE_MODE [[DSP Services|DSP]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001A03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[DSP Services|DSP]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v6145]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001B02&lt;br /&gt;
| [[GPIO Services|GPIO]]&lt;br /&gt;
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]], [[9.5.0-22|v3073]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001B03&lt;br /&gt;
| SAFE_MODE [[GPIO Services|GPIO]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001B03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[GPIO Services|GPIO]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v3073]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001C02&lt;br /&gt;
| [[GSP Services|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]], [[9.6.0-24|v12294]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001C02&lt;br /&gt;
| [[New_3DS]] [[GSP Services|GSP]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v10243]], [[9.3.0-21|v11267]], [[9.6.0-24|v12294]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001C03&lt;br /&gt;
| SAFE_MODE [[GSP Services|GSP]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001C03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[GSP Services|GSP]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v9217]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001D02&lt;br /&gt;
| [[HID Services|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 Services|HID]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001D03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[HID Services|HID]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v8193]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001E02&lt;br /&gt;
| [[I2C Services|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 Services|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 Services|i2c]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|- &lt;br /&gt;
| 20001E03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[I2C Services|i2c]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v4097]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001F02&lt;br /&gt;
| [[MCU Services|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 Services|MCU]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v8192]]&lt;br /&gt;
|-&lt;br /&gt;
| 00001F03&lt;br /&gt;
| SAFE_MODE [[MCU Services|MCU]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20001F03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[MCU Services|MCU]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v9217]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002002&lt;br /&gt;
| [[MIC Services|MIC]] (Microphone)&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 Services|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 Services|PDN]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002103&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[PDN Services|PDN]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v3073]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002202&lt;br /&gt;
| [[PTM Services|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]], [[9.6.0-24|v11264]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002202&lt;br /&gt;
| [[New_3DS]] [[PTM Services|PTM]] (Play time, pedometer, and battery manager)&lt;br /&gt;
| [[8.1.0-0_New3DS|v10240]], [[9.6.0-24|v11264]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002203&lt;br /&gt;
| SAFE_MODE [[PTM Services|PTM]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002203&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[PTM Services|PTM]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v10241]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002302&lt;br /&gt;
| [[SPI Services|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 Services|spi]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v4096]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002303&lt;br /&gt;
| SAFE_MODE [[SPI Services|spi]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002303&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[SPI Services|spi]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v4097]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002402&lt;br /&gt;
| [[AC Services|AC]] (Network manager)&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 Services|AC]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002403&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[AC Services|AC]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v8193]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002602&lt;br /&gt;
| [[CECD Services|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 Services|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 Services|CSND]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002703&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[CSND Services|CSND]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v5121]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002802&lt;br /&gt;
| [[DLP Services|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]]), [[9.6.0-24|v7174]], [[10.0.0-27|v8192]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002902&lt;br /&gt;
| [[HTTP Services|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]], [[9.6.0-24|v13318]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002903&lt;br /&gt;
| SAFE_MODE [[HTTP Services|HTTP]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002903&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[HTTP Services|HTTP]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v10241]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002A02&lt;br /&gt;
| [[MP Services|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 Services|MP]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002B02&lt;br /&gt;
| [[NDM Services|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]]&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]], [[9.6.0-24|v12296]], [[10.0.0-27|v13313]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002C03&lt;br /&gt;
| SAFE_MODE [[NIM Services|NIM]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002C03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[NIM Services|NIM]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v9217]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002D02&lt;br /&gt;
| [[NWM Services|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 Services|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 Services|NWM]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v10241]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002E02&lt;br /&gt;
| [[Socket Services|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]], [[10.6.0-31|v8192]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002E03&lt;br /&gt;
| SAFE_MODE [[Socket Services|Sockets]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002E03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[Socket Services|Sockets]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002F02&lt;br /&gt;
| [[SSL Services|SSL]]&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]], [[9.6.0-24|v8198]]&lt;br /&gt;
|-&lt;br /&gt;
| 00002F03&lt;br /&gt;
| SAFE_MODE [[SSL Services|SSL]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20002F03&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[SSL Services|SSL]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003000&lt;br /&gt;
| [[FIRM|Process9]] (in SAFE_MODE and normal NATIVE_FIRM)&lt;br /&gt;
| N/A&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 [[Process Services‎|PS]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20003103&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[Process Services‎|PS]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v5121]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003202&lt;br /&gt;
| [[Friend Services‎|friends]] (Friends list)&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]]), [[10.5.0-30|v9216]], [[10.7.0-32|v10240]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003203&lt;br /&gt;
| SAFE_MODE [[Friend Services‎|friends]] (Friends list)&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20003203&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[Friend Services‎|friends]] (Friends list)&lt;br /&gt;
| [[8.1.0-0_New3DS|v8193]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003302&lt;br /&gt;
| [[IR Services‎|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]], [[9.6.0-24|v10246]], [[10.0.0-27|v11265]], [[10.6.0-31|v12289]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003303&lt;br /&gt;
| SAFE_MODE [[IR Services‎|IR]]&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20003303&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[IR Services‎|IR]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|- &lt;br /&gt;
| 00003402&lt;br /&gt;
| [[BOSS Services‎|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]], [[10.0.0-27|v12289]], [[10.4.0-29|v13314]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003502&lt;br /&gt;
| [[News Services‎|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]], [[9.7.0-25|v7168]]&lt;br /&gt;
|-&lt;br /&gt;
| 00003602&lt;br /&gt;
| &amp;quot;debugger&amp;quot;. 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 Services‎|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]], [[9.6.0-24|v8198]]&lt;br /&gt;
|-&lt;br /&gt;
| 00004002&lt;br /&gt;
| Old3DS [[NFC_Services|nfc]]&lt;br /&gt;
| [[9.3.0-21|v2053]], [[9.6.0-24|v4106]], [[9.7.0-25|v5121]], [[10.0.0-27|v6145]], [[10.6.0-31|v7168]], [[10.7.0-32|v8192]]&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]], [[9.5.0-22|v3073]], [[9.6.0-24|v4102]], [[10.0.0-27|v6145]], [[10.6.0-31|v7168]]&lt;br /&gt;
|-&lt;br /&gt;
| 20004102&lt;br /&gt;
| [[New_3DS]] [[MVD Services|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]], [[9.6.0-24|v16390]], [[9.8.0-25|v17408]], [[10.0.0-27|v18433]], [[10.4.0-29|v19458]]&lt;br /&gt;
|-&lt;br /&gt;
| 00008003&lt;br /&gt;
| SAFE_MODE [[NS]] (Memory-region: &amp;quot;SYSTEM&amp;quot;)&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20008003&lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[NS]] (Memory-region: &amp;quot;SYSTEM&amp;quot;)&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. When the New3DS pm-module is launching any title except [[NS]], it first attempts to launch the title with programID-low bitmask 0x20000000 set, then with that bitmask clear if launching fails.&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]], v15043, [[8.0.0-18|v15047]], [[9.0.0-20|v17120]], [[9.3.0-21|v18182]], [[9.5.0-22|v19216]], [[9.6.0-24|v20262]], [[10.0.0-27|v21288]], [[10.2.0-28|v22313]], [[10.4.0-29|v23341]]&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]], [[9.5.0-22|v19218]], [[9.6.0-24|v20262]], [[10.0.0-27|v21288]], [[10.2.0-28|v22313]], [[10.4.0-29|v23341]]&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]], v3601, [[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]], v1553, [[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;
== 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;
&lt;br /&gt;
== TWL (DSi) 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;
|  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;
|  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;
&lt;br /&gt;
Bitmask 0x1 for TWL titles denotes a system title (determining whether the title will be updated during a System Update). It appears to be sufficient, but not necessary, to make the title invisible on the [[Home menu]].&lt;br /&gt;
&lt;br /&gt;
Bitmask 0x2 for TWL titles may indicate no-execute.&lt;br /&gt;
&lt;br /&gt;
Bitmask 0x4 for TWL titles indicates internal storage.&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 DS-mode application, (also integrated in every online-enabled DS game) and now accessible through [[System Settings]] for configuring network settings for DS software. &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;
&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>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=16387</id>
		<title>Factory Setup</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=16387"/>
		<updated>2016-04-02T05:24:40Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With certain 3DS nandimages, the following NCCH can be recovered from NAND(in some cases these are somewhat corrupted). In some cases, only 000400000F980000 is left, in other cases the NCCH headers for all of these are overwritten. &#039;&#039;All&#039;&#039; of these use the retail NCCH secure-crypto mode, the NCCH accessdesc uses the retail pubk too.&lt;br /&gt;
&lt;br /&gt;
Note that [[Nandrw/sys/updater.log]], [[Twln/sys/log/inspect.log]], and [[Twln/sys/log/product.log]] gets written during Factory Setup. CTRAging appears to do the product.log writing.&lt;br /&gt;
&lt;br /&gt;
CTRAging appears to be an app which is used for hardware testing at the factory. This app also displays images(including Chinese/Asian-language text) which appear to be for system assembly/testing. CTRAging includes images for each 3DS model(which ones are included depends on the CTRAging version): original Old3DS, Old3DS XL, 2DS, regular New3DS, and New3DS XL. Some of the New3DS JPEG images have an EXIF last-modified timestamp of 2013, July-September.&lt;br /&gt;
&lt;br /&gt;
Originally these titles(except for CTRAging) and the exheader dependency lists had TID-high 00040001, later that was changed to the [[Title_list|normal]] TID-highs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TID-high&lt;br /&gt;
!  TID-low&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 00040000&lt;br /&gt;
| 0F980000&lt;br /&gt;
| CTRAging (&amp;quot;Test Program&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000102&lt;br /&gt;
| TWL_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001802&lt;br /&gt;
| codec sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt sysmodule (Debugger sysmodule, see [[Title_list|here]])&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001A02&lt;br /&gt;
| dsp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001B02&lt;br /&gt;
| gpio sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001D02&lt;br /&gt;
| hid sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001F02&lt;br /&gt;
| mcu sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002102&lt;br /&gt;
| pdn sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002302&lt;br /&gt;
| spi sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002702&lt;br /&gt;
| csnd sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002A02&lt;br /&gt;
| mp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002B02&lt;br /&gt;
| ndm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002C02&lt;br /&gt;
| nim sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002D02&lt;br /&gt;
| nwm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002E02&lt;br /&gt;
| socket sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003102&lt;br /&gt;
| ps module&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003202&lt;br /&gt;
| friends sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003302&lt;br /&gt;
| ir sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003402&lt;br /&gt;
| boss sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp|DevErrDi]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040030&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FSPXI:WriteFile&amp;diff=13302</id>
		<title>FSPXI:WriteFile</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FSPXI:WriteFile&amp;diff=13302"/>
		<updated>2015-09-16T05:55:18Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: Created page with &amp;quot;=Request= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Description |- | 0 | Header code [0x000B0182] |- | 1 | File handle lower word |- | 2 | File handle upper word |- | 3...&amp;quot;&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 [0x000B0182]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| File handle lower word&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| File handle upper word&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Offset lower word&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Offset upper word&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Flush flags&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Size&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| (Size &amp;lt;&amp;lt; 8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 6&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Output 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;
| 2&lt;br /&gt;
| Size written&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services_PXI&amp;diff=13301</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=13301"/>
		<updated>2015-09-16T05:51:15Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Post 3.x =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&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;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenFile|OpenFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteFile?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030244&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| RenameFile?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteDirectory?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050202&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateFile?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060182&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateDirectory?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070244&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| RenameDirectory?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| OpenDirectory&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:ReadFile|ReadFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CalculateFileHashSHA256&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0182&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:WriteFile|WriteFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0104&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetFileSize|GetFileSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:SetFileSize|SetFileSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CloseFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ReadDirectory&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CloseDirectory&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenArchive|OpenArchive]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateExtSaveData?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0015....&lt;br /&gt;
| 3.0.0.0?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016....&lt;br /&gt;
| 3.0.0.0?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0017....&lt;br /&gt;
| 3.0.0.0?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardType&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcFatFsError&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcDetected&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcWritable&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandCid|GetNandCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardSlotInserted&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOn&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOff&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotGetIfPowerStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003000C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00310082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardNorDirectCpuWriteWithoutVerify&lt;br /&gt;
|-&lt;br /&gt;
| 0x00320040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00330080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetProductInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| 1.0.0-0 &lt;br /&gt;
| SetCardSpiBaudrate&lt;br /&gt;
|-&lt;br /&gt;
| 0x00350040&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| SetCardSpiBusMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360040&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| SendInitializeInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0100&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| GetSpecialContentIndex&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B00C2&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| GetLegacyRomHeader&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C00C2&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| GetLegacyBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E0000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0040&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| DeleteAllExtSaveDataOnNand&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| CreateSeed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420042&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00430040&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| GetArchiveResource&lt;br /&gt;
|-&lt;br /&gt;
| 0x00440002&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450002&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460082&lt;br /&gt;
| 2.0.0-2&lt;br /&gt;
| EnumerateSharedExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470102&lt;br /&gt;
| 2.0.0-2&lt;br /&gt;
| GetLegacySubBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480042&lt;br /&gt;
| 2.0.0-2&lt;br /&gt;
| Initialize (?) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00490102&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| ReadSpecialFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A0040&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| GetSpecialFileSize. cmd[1] = must be value 0x0. Writes the u64 size to cmdreply[2-3].&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B0000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C..&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x004D01C4&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FSPXI:ReadFileWrapper|ReadFileWrapper]]. If the first ReadFile call fails, this calls ReadFile again then executes hash-related code.&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;
| 0x004F....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| (unknown_u64)&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;
| 0x0051....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| (unknown_u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00520042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FSPXI:EnumerateSystemSaveData|EnumerateSystemSaveData]]&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;
| 0x0054....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Stubbed with [[4.0.0-7]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ReadNandReport&lt;br /&gt;
|-&lt;br /&gt;
| 0x00560102&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| This calls some archive-class vtable funcptr, for the specified archive-handle. It&#039;s unknown what this is for.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Pre 3.x =&lt;br /&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;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000101C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenFile|OpenFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020142&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;
| [[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;
| [[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;
| [[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;
| [[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;
| [[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;
| [[1.0.0-0]]&lt;br /&gt;
| OpenDirectory (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:ReadFile|ReadFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CalculateFileHashSHA256&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0182&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| WriteFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0104&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetFileSize|GetFileSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0100&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;
| [[1.0.0-0]]&lt;br /&gt;
| CloseFile (filehandlelo, filehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C2&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;
| [[1.0.0-0]]&lt;br /&gt;
| CloseDirectory (dirhandlelo, dirhandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenArchive|OpenArchive]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130102&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;
| [[1.0.0-0]]&lt;br /&gt;
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150102&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;
| [[1.0.0-0]]&lt;br /&gt;
| CloseArchive (archivehandlelo, archivehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ReopenArchive? (archivehandlelo, archivehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardType&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcFatFsError&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcDetected&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcWritable&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandCid|GetNandCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardSlotInserted&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOn&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOff&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotGetIfPowerStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&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;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003000C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00310082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardNorDirectCpuWriteWithoutVerify&lt;br /&gt;
|-&lt;br /&gt;
| 0x00320040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00330080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetProductInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SetCardSpiBaudrate&lt;br /&gt;
|-&lt;br /&gt;
| 0x00350040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SetCardSpiBusMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SendInitializeInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370140&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003800C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| EnumerateExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSpecialContentIndex&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetLegacyRomHeader&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetLegacyBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E....&lt;br /&gt;
| ?&lt;br /&gt;
| This was removed with version 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteAllExtSaveDataOnNand&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateSeed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00430042&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00440040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetArchiveResource&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450002&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460002&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470082&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| EnumerateSharedExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480102&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetLegacySubBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00490042&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| Initialize (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A00C2&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;
| [[2.0.0-2]]&lt;br /&gt;
| ReadSpecialFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C0040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetSpecialFileSize. cmd[1] = must be value 0x0. Writes the u64 size to cmdreply[2-3].&lt;br /&gt;
|-&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;
| 0xC82044BE&lt;br /&gt;
| Object does already exist/failed to create object.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC86044D2&lt;br /&gt;
| Failed to write file. Partition is full.&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;
| 0xC880448D&lt;br /&gt;
| FSPXI: Gamecard not inserted when attempting to use the gamecard.&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;
| Operation not allowed with the current file openflags/file already in use (if file was previously opened for writing).&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;
| 0xD9004587&lt;br /&gt;
| FSPXI: Hash verification failure (only for NCCH region hashes?).&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;
| Invalid RomFS / savedata block hash.&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;
| 0xE0C046F9&lt;br /&gt;
| FSPXI: Specified read-size doesn&#039;t match the actual filesize, when accessing ExeFS.&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;
| 0xE0E046C1&lt;br /&gt;
| File-reading returns this when the input 64bit file-pos is negative, or when the file-pos is larger than the filesize.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E046D1&lt;br /&gt;
| Failed to write to file because it would exceed the file size limit of the file system.&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>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FSPXI:SetFileSize&amp;diff=13277</id>
		<title>FSPXI:SetFileSize</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FSPXI:SetFileSize&amp;diff=13277"/>
		<updated>2015-09-14T05:59:53Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: Created page with &amp;quot;=Request= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Description |- | 0 | Header code [0x000E0100] |- | 1 | Size lower word |- | 2 | Size lower word |- | 3 | File handle...&amp;quot;&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 [0x000E0100]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Size lower word&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Size lower word&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| File handle lower word&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| File handle upper word&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;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services_PXI&amp;diff=13276</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=13276"/>
		<updated>2015-09-14T05:56:44Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Post 3.x =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&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;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenFile|OpenFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteFile?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030244&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| RenameFile?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteDirectory?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050202&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateFile?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060182&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateDirectory?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070244&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| RenameDirectory?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| OpenDirectory&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:ReadFile|ReadFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CalculateFileHashSHA256&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0182&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| WriteFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0104&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetFileSize|GetFileSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:SetFileSize|SetFileSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CloseFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ReadDirectory&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CloseDirectory&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenArchive|OpenArchive]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateExtSaveData?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0015....&lt;br /&gt;
| 3.0.0.0?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016....&lt;br /&gt;
| 3.0.0.0?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0017....&lt;br /&gt;
| 3.0.0.0?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardType&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcFatFsError&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcDetected&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcWritable&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandCid|GetNandCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardSlotInserted&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOn&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOff&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotGetIfPowerStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003000C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00310082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardNorDirectCpuWriteWithoutVerify&lt;br /&gt;
|-&lt;br /&gt;
| 0x00320040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00330080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetProductInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| 1.0.0-0 &lt;br /&gt;
| SetCardSpiBaudrate&lt;br /&gt;
|-&lt;br /&gt;
| 0x00350040&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| SetCardSpiBusMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360040&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| SendInitializeInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0100&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| GetSpecialContentIndex&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B00C2&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| GetLegacyRomHeader&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C00C2&lt;br /&gt;
| 1.0.0-0&lt;br /&gt;
| GetLegacyBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E0000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0040&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| DeleteAllExtSaveDataOnNand&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| CreateSeed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420042&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00430040&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| GetArchiveResource&lt;br /&gt;
|-&lt;br /&gt;
| 0x00440002&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450002&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460082&lt;br /&gt;
| 2.0.0-2&lt;br /&gt;
| EnumerateSharedExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470102&lt;br /&gt;
| 2.0.0-2&lt;br /&gt;
| GetLegacySubBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480042&lt;br /&gt;
| 2.0.0-2&lt;br /&gt;
| Initialize (?) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00490102&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| ReadSpecialFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A0040&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| GetSpecialFileSize. cmd[1] = must be value 0x0. Writes the u64 size to cmdreply[2-3].&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B0000&lt;br /&gt;
| 3.0.0-0&lt;br /&gt;
| [[FSPXI:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C..&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x004D01C4&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FSPXI:ReadFileWrapper|ReadFileWrapper]]. If the first ReadFile call fails, this calls ReadFile again then executes hash-related code.&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;
| 0x004F....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| (unknown_u64)&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;
| 0x0051....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| (unknown_u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00520042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FSPXI:EnumerateSystemSaveData|EnumerateSystemSaveData]]&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;
| 0x0054....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Stubbed with [[4.0.0-7]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ReadNandReport&lt;br /&gt;
|-&lt;br /&gt;
| 0x00560102&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| This calls some archive-class vtable funcptr, for the specified archive-handle. It&#039;s unknown what this is for.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Pre 3.x =&lt;br /&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;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000101C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenFile|OpenFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020142&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;
| [[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;
| [[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;
| [[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;
| [[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;
| [[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;
| [[1.0.0-0]]&lt;br /&gt;
| OpenDirectory (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:ReadFile|ReadFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CalculateFileHashSHA256&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0182&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| WriteFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0104&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetFileSize|GetFileSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0100&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;
| [[1.0.0-0]]&lt;br /&gt;
| CloseFile (filehandlelo, filehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C2&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;
| [[1.0.0-0]]&lt;br /&gt;
| CloseDirectory (dirhandlelo, dirhandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:OpenArchive|OpenArchive]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130102&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;
| [[1.0.0-0]]&lt;br /&gt;
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150102&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;
| [[1.0.0-0]]&lt;br /&gt;
| CloseArchive (archivehandlelo, archivehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ReopenArchive? (archivehandlelo, archivehandlehi)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardType&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcFatFsError&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcDetected&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcWritable&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:GetNandCid|GetNandCid]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandSpeedInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearSdmcLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| ClearNandLog&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetCardSlotInserted&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOn&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotPowerOff&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardSlotGetIfPowerStatus&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0040&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;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003000C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00310082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CardNorDirectCpuWriteWithoutVerify&lt;br /&gt;
|-&lt;br /&gt;
| 0x00320040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00330080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetProductInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00340040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SetCardSpiBaudrate&lt;br /&gt;
|-&lt;br /&gt;
| 0x00350040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SetCardSpiBusMode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SendInitializeInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370140&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003800C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| EnumerateExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetSpecialContentIndex&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetLegacyRomHeader&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetLegacyBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D....&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E....&lt;br /&gt;
| ?&lt;br /&gt;
| This was removed with version 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| DeleteAllExtSaveDataOnNand&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| CreateSeed&lt;br /&gt;
|-&lt;br /&gt;
| 0x00430042&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00440040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetArchiveResource&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450002&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460002&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470082&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| EnumerateSharedExtSaveData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480102&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetLegacySubBannerData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00490042&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| Initialize (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A00C2&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;
| [[2.0.0-2]]&lt;br /&gt;
| ReadSpecialFile&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C0040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| GetSpecialFileSize. cmd[1] = must be value 0x0. Writes the u64 size to cmdreply[2-3].&lt;br /&gt;
|-&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;
| 0xC82044BE&lt;br /&gt;
| Object does already exist/failed to create object.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC86044D2&lt;br /&gt;
| Failed to write file. Partition is full.&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;
| 0xC880448D&lt;br /&gt;
| FSPXI: Gamecard not inserted when attempting to use the gamecard.&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;
| Operation not allowed with the current file openflags/file already in use (if file was previously opened for writing).&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;
| 0xD9004587&lt;br /&gt;
| FSPXI: Hash verification failure (only for NCCH region hashes?).&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;
| Invalid RomFS / savedata block hash.&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;
| 0xE0C046F9&lt;br /&gt;
| FSPXI: Specified read-size doesn&#039;t match the actual filesize, when accessing ExeFS.&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;
| 0xE0E046C1&lt;br /&gt;
| File-reading returns this when the input 64bit file-pos is negative, or when the file-pos is larger than the filesize.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E046D1&lt;br /&gt;
| Failed to write to file because it would exceed the file size limit of the file system.&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>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=SPICARD_Registers&amp;diff=13266</id>
		<title>SPICARD Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=SPICARD_Registers&amp;diff=13266"/>
		<updated>2015-09-13T06:10:05Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x1000D800&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x1000D804&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x1000D808&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| REG_SPICARDFIFO&lt;br /&gt;
| 0x1000D80C&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x1000D810&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x1000D818&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PXI_Registers&amp;diff=13217</id>
		<title>PXI Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PXI_Registers&amp;diff=13217"/>
		<updated>2015-09-08T01:07:46Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Protocol =&lt;br /&gt;
The communication protocol for normal PXI commands is documented below. The size of cmd_buf is calculated from the cmd_hdr. With newer FIRM the total size for command header + buffer must be at most 0x40 words, otherwise Process9 will panic.&lt;br /&gt;
&lt;br /&gt;
Each pxi_id corresponds to a Process9 PXI [[PXI_Services|command-handler]](called from threads) which handles the actual command processing. With newer FIRM the pxi_id must be in a certain range.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a dedicated Process9 thread for receiving data from PXI(in newer FIRM this is the main-thread), once it finishes receiving a request it copies the cmd_buf into a buffer for the corresponding pxi_id then signals an event so that the cmd-handler thread can process it. Once a cmd-handler thread finishes processing a command, the thread itself then sends the response over PXI. This means that multiple commands for different pxiIDs can be be handled at the same time, even when one cmd-handler completely hangs/etc for example.&lt;br /&gt;
&lt;br /&gt;
Process9 will execute [[SVC|svcBreak]] when it receives a PXI command with a pxi_id where another cmmand with that same pxi_id is still being processed by the command-handler(this won&#039;t happen with commands sent by the ARM11 PXI-module, since it waits for the command reply before sending another command request for that same pxi_id).&lt;br /&gt;
&lt;br /&gt;
==Request==&lt;br /&gt;
 A11-&amp;gt;A9 (u32) pxi_id&lt;br /&gt;
 A11-&amp;gt;A9 (u32) cmd_hdr&lt;br /&gt;
 A11-&amp;gt;A9 (u32[]) cmd_buf&lt;br /&gt;
&lt;br /&gt;
==Response==&lt;br /&gt;
 A9-&amp;gt;A11 (u32) pxi_id&lt;br /&gt;
 A9-&amp;gt;A11 (u32) cmd_hdr&lt;br /&gt;
 A9-&amp;gt;A11 (u32[]) cmd_buf&lt;br /&gt;
&lt;br /&gt;
==pxi_id==&lt;br /&gt;
 0 = pxi_mc&lt;br /&gt;
 1 = pxi_fs&lt;br /&gt;
 2 = pxi_fs&lt;br /&gt;
 3 = pxi_fs&lt;br /&gt;
 4 = pxi_fs&lt;br /&gt;
 5 = pxi_pm&lt;br /&gt;
 6 = pxi_dev&lt;br /&gt;
 7 = pxi_am&lt;br /&gt;
 8 = pxi_ps&lt;br /&gt;
 9 = stubbed&lt;br /&gt;
&lt;br /&gt;
= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PXI_SYNC9|PXI_SYNC9]]&lt;br /&gt;
| 0x10008000&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PXI_????9&lt;br /&gt;
| 0x10008003&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PXI_CNT|PXI_CNT]]9&lt;br /&gt;
| 0x10008004&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PXI_SEND9&lt;br /&gt;
| 0x10008008&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PXI_RECV9&lt;br /&gt;
| 0x1000800C&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PXI_SYNC11&lt;br /&gt;
| 0x10163000&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#PXI_CNT|PXI_CNT]]11&lt;br /&gt;
| 0x10163004&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PXI_SEND11&lt;br /&gt;
| 0x10163008&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| PXI_RECV_11&lt;br /&gt;
| 0x1016300C&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The PXI registers are similar to those on DS.&lt;br /&gt;
&lt;br /&gt;
== PXI_SYNC9 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bit&lt;br /&gt;
!  RW&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-8&lt;br /&gt;
| R&lt;br /&gt;
| Data input from bit8-15 of PXI_SYNC11&lt;br /&gt;
|-&lt;br /&gt;
| 8-15&lt;br /&gt;
| R/W&lt;br /&gt;
| Data output to bit0-8 of PXI_SYNC11&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PXI_CNT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bit&lt;br /&gt;
!  RW&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| R&lt;br /&gt;
| Send Fifo Empty Status      (0=Not Empty, 1=Empty)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| R&lt;br /&gt;
| Send Fifo Full Status       (0=Not Full, 1=Full)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| R/W&lt;br /&gt;
| Send Fifo Empty IRQ         (0=Disable, 1=Enable)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| W&lt;br /&gt;
| Send Fifo Clear             (0=Nothing, 1=Flush Send Fifo)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| R&lt;br /&gt;
| Receive Fifo Empty          (0=Not Empty, 1=Empty)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| R&lt;br /&gt;
| Receive Fifo Full           (0=Not Full, 1=Full)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| R/W&lt;br /&gt;
| Receive Fifo Not Empty IRQ  (0=Disable, 1=Enable)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| R/W&lt;br /&gt;
| Error, Read Empty/Send Full (0=No Error, 1=Error/Acknowledge)&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| R/W &lt;br /&gt;
| Enable Send/Receive Fifo    (0=Disable, 1=Enable)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=12225</id>
		<title>CONFIG9 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=12225"/>
		<updated>2015-04-04T13:00:40Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: Undo revision 12224 by Normmatt (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_SYSPROT9|CFG_SYSPROT9]]&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_SYSPROT11|CFG_SYSPROT11]]&lt;br /&gt;
| 0x10000001&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG_DEBUGUNIT&lt;br /&gt;
| 0x10000004&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_CARDCONF|CFG_CARDCONF]]&lt;br /&gt;
| 0x1000000C&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG_DEBUGGER&lt;br /&gt;
| 0x10000010&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000011&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000012&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000014&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000020&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG_EXTMEMCNT9|CFG_EXTMEMCNT9]]&lt;br /&gt;
| 0x10000200&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_MPCORECFG|CFG_MPCORECFG]]&lt;br /&gt;
| 0x10000FFC&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_BOOTENV|CFG_BOOTENV]]&lt;br /&gt;
| 0x10010000&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_UNITINFO|CFG_UNITINFO]]&lt;br /&gt;
| 0x10010010&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10010014&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==CFG_SYSPROT9 == &lt;br /&gt;
Writing values to SYSPROT sets the specified bitmask. The ARM9 [[Memory_layout|bootrom]](+0x8000) is disabled by writing bit0. bit1 is used by NATIVE_FIRM to make sure console-unique TWL AES-keys are only set at hard-boot. It is not possible to set any other bits.&lt;br /&gt;
&lt;br /&gt;
From disassembly of the New3DS process9, it appears that setting bit1 disables the 0x10012000+ region.&lt;br /&gt;
&lt;br /&gt;
== CFG_SYSPROT11 == &lt;br /&gt;
ARM11 bootrom (+0x8000) is disabled by writing bit0. It is not possible to set any other bits.&lt;br /&gt;
&lt;br /&gt;
== CFG_CARDCONF ==&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;
| 1-0&lt;br /&gt;
| Gamecard active controller select (0=NTRCARD, 1=?, 2=CTRCARD1, 3=CTRCARD2)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Depending on the gamecard controller that has been selected, one of the following gamecard registers will become active:&lt;br /&gt;
* Selecting NTRCARD will activate the register space at [[NTRCARD|0x10164000]].&lt;br /&gt;
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10004000]].&lt;br /&gt;
* Selecting CTRCARD2 will activate the register space at [[CTRCARD|0x10005000]].&lt;br /&gt;
&lt;br /&gt;
== CFG_EXTMEMCNT9 ==&lt;br /&gt;
This register is presumably New3DS-only. Only bit0 is writable: 0 = disable New3DS ARM9 memory at 0x08100000 size 0x80000, 1 = enable.&lt;br /&gt;
&lt;br /&gt;
This bit is set by New3DS ARM9-kernel crt0.&lt;br /&gt;
&lt;br /&gt;
The data in this extended memory doesn&#039;t change when disabling the memory, then re-enabling the memory. Reading this extended memory while disabled results in zeros.&lt;br /&gt;
&lt;br /&gt;
== CFG_MPCORECFG ==&lt;br /&gt;
Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]].&lt;br /&gt;
&lt;br /&gt;
== CFG_BOOTENV ==&lt;br /&gt;
Initially this is value zero. NATIVE_FIRM writes value 1 here when a FIRM launch begins. The [[Legacy_FIRM_PXI|LGY]] FIRM writes value 3 here when handling PXI command 0x00020080(first TWL PXI command), it also writes value 7 here when handling PXI command 0x00030080(first AGB PXI command). This register can be read to determine what &amp;quot;mode&amp;quot; the system is running under: hard-boot, FIRM launch, or TWL/AGB FIRM.&lt;br /&gt;
&lt;br /&gt;
0=Cold boot, 1=CTR, 3=TWL, 5=NTR, 7=AGB&lt;br /&gt;
&lt;br /&gt;
It is unknown if this register controls anything.&lt;br /&gt;
&lt;br /&gt;
== CFG_UNITINFO ==&lt;br /&gt;
This 8-bit register is value zero for retail, non-zero for dev/debug units.&lt;br /&gt;
&lt;br /&gt;
== 0x10010014 ==&lt;br /&gt;
In the console-unique TWL key-init/etc function the ARM9 copies the u8 value from REG_UNITINFO to this register.&lt;br /&gt;
&lt;br /&gt;
This is also used by TWL_FIRM Process9.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=12224</id>
		<title>CONFIG9 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=12224"/>
		<updated>2015-04-04T11:41:37Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Registers =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  Used by&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_SYSPROT9|CFG_SYSPROT9]]&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_SYSPROT11|CFG_SYSPROT11]]&lt;br /&gt;
| 0x10000001&lt;br /&gt;
| 1&lt;br /&gt;
| Boot9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG_DEBUGUNIT&lt;br /&gt;
| 0x10000004&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_CARDCONF|CFG_CARDCONF]]&lt;br /&gt;
| 0x1000000C&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| CFG_DEBUGGER&lt;br /&gt;
| 0x10000010&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000011&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000012&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000014&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000020&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000100&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[#CFG_EXTMEMCNT9|CFG_EXTMEMCNT9]]&lt;br /&gt;
| 0x10000200&lt;br /&gt;
| 1&lt;br /&gt;
| NewKernel9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_MPCORECFG|CFG_MPCORECFG]]&lt;br /&gt;
| 0x10000FFC&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10001000&lt;br /&gt;
| 4&lt;br /&gt;
| Bootrom&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_BOOTENV|CFG_BOOTENV]]&lt;br /&gt;
| 0x10010000&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#CFG_UNITINFO|CFG_UNITINFO]]&lt;br /&gt;
| 0x10010010&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10010014&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==CFG_SYSPROT9 == &lt;br /&gt;
Writing values to SYSPROT sets the specified bitmask. The ARM9 [[Memory_layout|bootrom]](+0x8000) is disabled by writing bit0. bit1 is used by NATIVE_FIRM to make sure console-unique TWL AES-keys are only set at hard-boot. It is not possible to set any other bits.&lt;br /&gt;
&lt;br /&gt;
From disassembly of the New3DS process9, it appears that setting bit1 disables the 0x10012000+ region.&lt;br /&gt;
&lt;br /&gt;
== CFG_SYSPROT11 == &lt;br /&gt;
ARM11 bootrom (+0x8000) is disabled by writing bit0. It is not possible to set any other bits.&lt;br /&gt;
&lt;br /&gt;
== CFG_CARDCONF ==&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;
| 1-0&lt;br /&gt;
| Gamecard active controller select (0=NTRCARD, 1=?, 2=CTRCARD1, 3=CTRCARD2)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Depending on the gamecard controller that has been selected, one of the following gamecard registers will become active:&lt;br /&gt;
* Selecting NTRCARD will activate the register space at [[NTRCARD|0x10164000]].&lt;br /&gt;
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10004000]].&lt;br /&gt;
* Selecting CTRCARD2 will activate the register space at [[CTRCARD|0x10005000]].&lt;br /&gt;
&lt;br /&gt;
== CFG_EXTMEMCNT9 ==&lt;br /&gt;
This register is presumably New3DS-only. Only bit0 is writable: 0 = disable New3DS ARM9 memory at 0x08100000 size 0x80000, 1 = enable.&lt;br /&gt;
&lt;br /&gt;
This bit is set by New3DS ARM9-kernel crt0.&lt;br /&gt;
&lt;br /&gt;
The data in this extended memory doesn&#039;t change when disabling the memory, then re-enabling the memory. Reading this extended memory while disabled results in zeros.&lt;br /&gt;
&lt;br /&gt;
== CFG_MPCORECFG ==&lt;br /&gt;
Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]].&lt;br /&gt;
&lt;br /&gt;
== CFG_BOOTENV ==&lt;br /&gt;
Initially this is value zero. NATIVE_FIRM writes value 1 here when a FIRM launch begins. The [[Legacy_FIRM_PXI|LGY]] FIRM writes value 3 here when handling PXI command 0x00020080(first TWL PXI command), it also writes value 7 here when handling PXI command 0x00030080(first AGB PXI command). This register can be read to determine what &amp;quot;mode&amp;quot; the system is running under: hard-boot, FIRM launch, or TWL/AGB FIRM.&lt;br /&gt;
&lt;br /&gt;
0=Cold boot, 1=CTR, 3=TWL, 5=NTR, 7=AGB&lt;br /&gt;
&lt;br /&gt;
It is unknown if this register controls anything.&lt;br /&gt;
&lt;br /&gt;
== CFG_UNITINFO ==&lt;br /&gt;
This 8-bit register is value zero for retail, non-zero for dev/debug units.&lt;br /&gt;
&lt;br /&gt;
== 0x10010014 ==&lt;br /&gt;
In the console-unique TWL key-init/etc function the ARM9 copies the u8 value from REG_UNITINFO to this register.&lt;br /&gt;
&lt;br /&gt;
This is also used by TWL_FIRM Process9.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AES_Registers&amp;diff=12104</id>
		<title>AES Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AES_Registers&amp;diff=12104"/>
		<updated>2015-03-27T02:32:44Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* Keyslot ranges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Registers ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Old3DS&lt;br /&gt;
!  Name&lt;br /&gt;
!  Address&lt;br /&gt;
!  Width&lt;br /&gt;
!  RW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#AES_CNT|AES_CNT]]&lt;br /&gt;
| 0x10009000&lt;br /&gt;
| 4&lt;br /&gt;
| RW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#AES_BLKCNT|AES_BLKCNT]]&lt;br /&gt;
| 0x10009004&lt;br /&gt;
| 4&lt;br /&gt;
| W?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#AES_WRFIFO/AES_RDFIFO|AES_WRFIFO]]&lt;br /&gt;
| 0x10009008&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#AES_WRFIFO/AES_RDFIFO|AES_RDFIFO]]&lt;br /&gt;
| 0x1000900C&lt;br /&gt;
| 4&lt;br /&gt;
| R&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEYSEL&lt;br /&gt;
| 0x10009010&lt;br /&gt;
| 1&lt;br /&gt;
| RW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#AES_KEYCNT|AES_KEYCNT]]&lt;br /&gt;
| 0x10009011&lt;br /&gt;
| 1&lt;br /&gt;
| RW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#AES_CTR|AES_CTR]]&lt;br /&gt;
| 0x10009020&lt;br /&gt;
| 16&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[#AES_MAC|AES_MAC]]&lt;br /&gt;
| 0x10009030&lt;br /&gt;
| 16&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEY0&lt;br /&gt;
| 0x10009040&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEY1&lt;br /&gt;
| 0x10009070&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEY2&lt;br /&gt;
| 0x100090A0&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEY3&lt;br /&gt;
| 0x100090D0&lt;br /&gt;
| 48&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEYFIFO&lt;br /&gt;
| 0x10009100&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEYXFIFO&lt;br /&gt;
| 0x10009104&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| AES_KEYYFIFO&lt;br /&gt;
| 0x10009108&lt;br /&gt;
| 4&lt;br /&gt;
| W&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AES_CNT ==&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;
== AES_BLKCNT ==&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;
== AES_WRFIFO/AES_RDFIFO ==&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;
== AES_KEYCNT ==&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;
== AES_CTR ==&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;
== AES_MAC ==&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 AES_CTR or AES_MAC register, the hardware will process the written data according to the current input endianness specified in AES_CNT. 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;
| 0x3C-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>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12063</id>
		<title>Factory Setup</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12063"/>
		<updated>2015-03-25T09:58:41Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With certain 3DS nandimages, the following NCCH can be recovered from NAND(in some cases these are somewhat corrupted). In some cases, only 000400000F980000 is left, in other cases the NCCH headers for all of these are overwritten. &#039;&#039;All&#039;&#039; of these use the retail NCCH secure-crypto mode, the NCCH accessdesc uses the retail pubk too.&lt;br /&gt;
&lt;br /&gt;
Note that [[Nandrw/sys/updater.log]], [[Twln/sys/log/inspect.log]], and [[Twln/sys/log/product.log]] gets written during Factory Setup. CTRAging probably does the product.log writing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TID-high&lt;br /&gt;
!  TID-low&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 00040000&lt;br /&gt;
| 0F980000&lt;br /&gt;
| CTRAging (&amp;quot;Test Program&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000102&lt;br /&gt;
| TWL_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt (Debugger sysmodule, see [[Title_list|here]])&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001B02&lt;br /&gt;
| gpio sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001D02&lt;br /&gt;
| hid sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001F02&lt;br /&gt;
| mcu sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002102&lt;br /&gt;
| pdn sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002302&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002702&lt;br /&gt;
| csnd sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002A02&lt;br /&gt;
| mp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002B02&lt;br /&gt;
| ndm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002C02&lt;br /&gt;
| nim sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002D02&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003102&lt;br /&gt;
| ps module&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003202&lt;br /&gt;
| friends sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003302&lt;br /&gt;
| ir sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003402&lt;br /&gt;
| boss sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp|DevErrDi]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040030&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12062</id>
		<title>Factory Setup</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12062"/>
		<updated>2015-03-25T09:56:44Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With certain 3DS nandimages, the following NCCH can be recovered from NAND(in some cases these are somewhat corrupted). In some cases, only 000400000F980000 is left, in other cases the NCCH headers for all of these are overwritten. &#039;&#039;All&#039;&#039; of these use the retail NCCH secure-crypto mode, the NCCH accessdesc uses the retail pubk too.&lt;br /&gt;
&lt;br /&gt;
Note that [[Nandrw/sys/updater.log]], [[Twln/sys/log/inspect.log]], and [[Twln/sys/log/product.log]] gets written during Factory Setup. CTRAging probably does the product.log writing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TID-high&lt;br /&gt;
!  TID-low&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 00040000&lt;br /&gt;
| 0F980000&lt;br /&gt;
| CTRAging (&amp;quot;Test Program&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000102&lt;br /&gt;
| TWL_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt (Debugger sysmodule, see [[Title_list|here]])&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001B02&lt;br /&gt;
| gpio sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001D02&lt;br /&gt;
| hid sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001F02&lt;br /&gt;
| mcu sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002102&lt;br /&gt;
| pdn sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002302&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002702&lt;br /&gt;
| csnd sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002A02&lt;br /&gt;
| mp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002B02&lt;br /&gt;
| ndm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002C02&lt;br /&gt;
| nim sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002D02&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003102&lt;br /&gt;
| ps module&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003202&lt;br /&gt;
| friends sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003302&lt;br /&gt;
| ir sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003402&lt;br /&gt;
| boss sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040030&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp|DevErrDi]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=ErrDisp&amp;diff=11705</id>
		<title>ErrDisp</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=ErrDisp&amp;diff=11705"/>
		<updated>2015-02-16T22:56:04Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* output, where *((u8*)errinfo) == 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This system process handles displaying the error screens, such as &amp;quot;an error has occurred, the system needs shutdown&amp;quot;. This can also display a register dump for exceptions, and info for fatal errors. (Normally the black-screen errors are displayed on retail, while the latter is displayed on development units.)&lt;br /&gt;
&lt;br /&gt;
The register dump/fatal error info can also be written to [[nandrw/sys/native.log]]. On retail consoles, the system does not notify ErrDisp that any user-land exceptions occurred, ErrDisp is only notified for this on dev/debug units. Therefore, on retail consoles native.log only contains info from fatal errors. Starting with [[5.0.0-11]] ErrDisp no longer writes logs to native.log, except when the error-type is value 5 and when other checks with the errorinfo structure are successful (normally processes using this port never use error-type 5).&lt;br /&gt;
&lt;br /&gt;
The bottom screen displays the error screen like &amp;quot;error has occurred&amp;quot;, even with a development 3DS. The top screen can display the development error info, this is only displayed when [[Configuration_Memory|UNITINFO]] bit0 is clear, for a development 3DS.&lt;br /&gt;
&lt;br /&gt;
ErrDisp handles &amp;quot;returning&amp;quot; to Home Menu via [[NSS:RebootSystem]], which triggers a hardware system reboot.&lt;br /&gt;
&lt;br /&gt;
= ErrDisp error port &amp;quot;err:f&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;
| 0x00010800&lt;br /&gt;
| ThrowFatalError(0x80-byte errorinfo)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020042&lt;br /&gt;
| (size, &amp;lt;nowiki&amp;gt;(size&amp;lt;&amp;lt;14) | 2&amp;lt;/nowiki&amp;gt;, errorinfoptr) This is similar to cmd1, except with this the input buffer is copied to final output errorinfo+0x80 instead of +0x0, via the ARM11 kernel. Max size is 0x100. ErrDisp doesn&#039;t do anything in the cmd-handler for this command at all, besides checking the command header and buffer header.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= output, where *((u8*)errinfo) == 4 =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry&lt;br /&gt;
! Format string&lt;br /&gt;
! Format args&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| PID&lt;br /&gt;
| 0x%08X_0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 0x10), *(u32*)(errinfo + 0x14)&lt;br /&gt;
| Process ID&lt;br /&gt;
|-&lt;br /&gt;
| REV&lt;br /&gt;
| %d&lt;br /&gt;
| *(u16*)(errinfo + 2) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; (*(u8*)(errinfo + 1) &amp;lt;&amp;lt; 16)&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| AID&lt;br /&gt;
| 0x%08X_0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 0x18), *(u32*)(errinfo + 0x1C)&lt;br /&gt;
| Application ID?&lt;br /&gt;
|-&lt;br /&gt;
| RSL&lt;br /&gt;
| 0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 4)&lt;br /&gt;
| Error code&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| %d&lt;br /&gt;
| *(u32*)(errinfo + 4) &amp;amp; 0x80000000 ? (*(u32*)(errinfo + 4) &amp;gt;&amp;gt; 0x27) - 0x20 :  *(u32*)(errinfo + 4) &amp;gt;&amp;gt; 0x27&lt;br /&gt;
| Error code level&lt;br /&gt;
|-&lt;br /&gt;
| Summary&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;amp; 0x7E00000) &amp;gt;&amp;gt; 21&lt;br /&gt;
| Error code summary&lt;br /&gt;
|-&lt;br /&gt;
| Module&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;amp; 0x3FC00) &amp;gt;&amp;gt; 10&lt;br /&gt;
| Error code module&lt;br /&gt;
|-&lt;br /&gt;
| Desc&lt;br /&gt;
| %d&lt;br /&gt;
| *(u32*)(errinfo + 4) &amp;amp; 0x3FF&lt;br /&gt;
| Error code description&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| %0.*s&lt;br /&gt;
| 0x2E, for (int i = 0; i &amp;lt; 2; i++) (errinfo + (((i &amp;lt;&amp;lt; 3) - i) + (i &amp;lt;&amp;lt; 4)) &amp;lt;&amp;lt; 1) + 0x20&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Datetime&lt;br /&gt;
| %04d/%02d/%02d %02d:%02d:%02d&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=ErrDisp&amp;diff=11704</id>
		<title>ErrDisp</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=ErrDisp&amp;diff=11704"/>
		<updated>2015-02-16T22:55:08Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* output, where *((u8*)errinfo) == 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This system process handles displaying the error screens, such as &amp;quot;an error has occurred, the system needs shutdown&amp;quot;. This can also display a register dump for exceptions, and info for fatal errors. (Normally the black-screen errors are displayed on retail, while the latter is displayed on development units.)&lt;br /&gt;
&lt;br /&gt;
The register dump/fatal error info can also be written to [[nandrw/sys/native.log]]. On retail consoles, the system does not notify ErrDisp that any user-land exceptions occurred, ErrDisp is only notified for this on dev/debug units. Therefore, on retail consoles native.log only contains info from fatal errors. Starting with [[5.0.0-11]] ErrDisp no longer writes logs to native.log, except when the error-type is value 5 and when other checks with the errorinfo structure are successful (normally processes using this port never use error-type 5).&lt;br /&gt;
&lt;br /&gt;
The bottom screen displays the error screen like &amp;quot;error has occurred&amp;quot;, even with a development 3DS. The top screen can display the development error info, this is only displayed when [[Configuration_Memory|UNITINFO]] bit0 is clear, for a development 3DS.&lt;br /&gt;
&lt;br /&gt;
ErrDisp handles &amp;quot;returning&amp;quot; to Home Menu via [[NSS:RebootSystem]], which triggers a hardware system reboot.&lt;br /&gt;
&lt;br /&gt;
= ErrDisp error port &amp;quot;err:f&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;
| 0x00010800&lt;br /&gt;
| ThrowFatalError(0x80-byte errorinfo)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020042&lt;br /&gt;
| (size, &amp;lt;nowiki&amp;gt;(size&amp;lt;&amp;lt;14) | 2&amp;lt;/nowiki&amp;gt;, errorinfoptr) This is similar to cmd1, except with this the input buffer is copied to final output errorinfo+0x80 instead of +0x0, via the ARM11 kernel. Max size is 0x100. ErrDisp doesn&#039;t do anything in the cmd-handler for this command at all, besides checking the command header and buffer header.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= output, where *((u8*)errinfo) == 4 =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry&lt;br /&gt;
! Format string&lt;br /&gt;
! Format args&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| PID&lt;br /&gt;
| 0x%08X_0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 0x10), *(u32*)(errinfo + 0x14)&lt;br /&gt;
| Process ID&lt;br /&gt;
|-&lt;br /&gt;
| REV&lt;br /&gt;
| %d&lt;br /&gt;
| *(u16*)(errinfo + 2) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; (*(u8*)(errinfo + 1) &amp;lt;&amp;lt; 16)&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| AID&lt;br /&gt;
| 0x%08X_0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 0x18), *(u32*)(errinfo + 0x1C)&lt;br /&gt;
| Application ID?&lt;br /&gt;
|-&lt;br /&gt;
| RSL&lt;br /&gt;
| 0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 4)&lt;br /&gt;
| Error code&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| %d&lt;br /&gt;
| *(u32*)(errinfo + 4) &amp;amp; 0x80000000 ? (*(u32*)(errinfo + 4) &amp;gt;&amp;gt; 0x27) - 0x20 :  *(u32*)(errinfo + 4) &amp;gt;&amp;gt; 0x27&lt;br /&gt;
| Error code level&lt;br /&gt;
|-&lt;br /&gt;
| Summary&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;amp; 0x7E00000) &amp;gt;&amp;gt; 21&lt;br /&gt;
| Error code summary&lt;br /&gt;
|-&lt;br /&gt;
| Module&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;amp; 0x3FC00) &amp;gt;&amp;gt; 10&lt;br /&gt;
| Error code module&lt;br /&gt;
|-&lt;br /&gt;
| Desc&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;lt;&amp;lt; 22) &amp;gt;&amp;gt; 22&lt;br /&gt;
| Error code description&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| %0.*s&lt;br /&gt;
| 0x2E, for (int i = 0; i &amp;lt; 2; i++) (errinfo + (((i &amp;lt;&amp;lt; 3) - i) + (i &amp;lt;&amp;lt; 4)) &amp;lt;&amp;lt; 1) + 0x20&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Datetime&lt;br /&gt;
| %04d/%02d/%02d %02d:%02d:%02d&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=ErrDisp&amp;diff=11703</id>
		<title>ErrDisp</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=ErrDisp&amp;diff=11703"/>
		<updated>2015-02-16T22:51:16Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* output, where *((u8*)errinfo) == 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This system process handles displaying the error screens, such as &amp;quot;an error has occurred, the system needs shutdown&amp;quot;. This can also display a register dump for exceptions, and info for fatal errors. (Normally the black-screen errors are displayed on retail, while the latter is displayed on development units.)&lt;br /&gt;
&lt;br /&gt;
The register dump/fatal error info can also be written to [[nandrw/sys/native.log]]. On retail consoles, the system does not notify ErrDisp that any user-land exceptions occurred, ErrDisp is only notified for this on dev/debug units. Therefore, on retail consoles native.log only contains info from fatal errors. Starting with [[5.0.0-11]] ErrDisp no longer writes logs to native.log, except when the error-type is value 5 and when other checks with the errorinfo structure are successful (normally processes using this port never use error-type 5).&lt;br /&gt;
&lt;br /&gt;
The bottom screen displays the error screen like &amp;quot;error has occurred&amp;quot;, even with a development 3DS. The top screen can display the development error info, this is only displayed when [[Configuration_Memory|UNITINFO]] bit0 is clear, for a development 3DS.&lt;br /&gt;
&lt;br /&gt;
ErrDisp handles &amp;quot;returning&amp;quot; to Home Menu via [[NSS:RebootSystem]], which triggers a hardware system reboot.&lt;br /&gt;
&lt;br /&gt;
= ErrDisp error port &amp;quot;err:f&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;
| 0x00010800&lt;br /&gt;
| ThrowFatalError(0x80-byte errorinfo)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020042&lt;br /&gt;
| (size, &amp;lt;nowiki&amp;gt;(size&amp;lt;&amp;lt;14) | 2&amp;lt;/nowiki&amp;gt;, errorinfoptr) This is similar to cmd1, except with this the input buffer is copied to final output errorinfo+0x80 instead of +0x0, via the ARM11 kernel. Max size is 0x100. ErrDisp doesn&#039;t do anything in the cmd-handler for this command at all, besides checking the command header and buffer header.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= output, where *((u8*)errinfo) == 4 =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry&lt;br /&gt;
! Format string&lt;br /&gt;
! Format args&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| PID&lt;br /&gt;
| 0x%08X_0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 0x10), *(u32*)(errinfo + 0x14)&lt;br /&gt;
| Process ID&lt;br /&gt;
|-&lt;br /&gt;
| REV&lt;br /&gt;
| %d&lt;br /&gt;
| *(u16*)(errinfo + 2) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; (*(u8*)(errinfo + 1) &amp;lt;&amp;lt; 16)&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| AID&lt;br /&gt;
| 0x%08X_0x%08X &lt;br /&gt;
| 0x41900000, *(u32*)(errinfo + 0x18)&lt;br /&gt;
| Application ID?&lt;br /&gt;
|-&lt;br /&gt;
| RSL&lt;br /&gt;
| 0x%08X &lt;br /&gt;
| *(u32*)(errinfo + 4)&lt;br /&gt;
| Error code&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| %d&lt;br /&gt;
| *(u32*)(errinfo + 4) &amp;amp; 0x80000000 ? (*(u32*)(errinfo + 4) &amp;gt;&amp;gt; 0x27) - 0x20 :  *(u32*)(errinfo + 4) &amp;gt;&amp;gt; 0x27&lt;br /&gt;
| Error code level&lt;br /&gt;
|-&lt;br /&gt;
| Summary&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;amp; 0x7E00000) &amp;gt;&amp;gt; 21&lt;br /&gt;
| Error code summary&lt;br /&gt;
|-&lt;br /&gt;
| Module&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;amp; 0x3FC00) &amp;gt;&amp;gt; 10&lt;br /&gt;
| Error code module&lt;br /&gt;
|-&lt;br /&gt;
| Desc&lt;br /&gt;
| %d&lt;br /&gt;
| (*(u32*)(errinfo + 4) &amp;lt;&amp;lt; 22) &amp;gt;&amp;gt; 22&lt;br /&gt;
| Error code description&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| %0.*s&lt;br /&gt;
| 0x2E, for (int i = 0; i &amp;lt; 2; i++) (errinfo + (((i &amp;lt;&amp;lt; 3) - i) + (i &amp;lt;&amp;lt; 4)) &amp;lt;&amp;lt; 1) + 0x20&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Datetime&lt;br /&gt;
| %04d/%02d/%02d %02d:%02d:%02d&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Title_list&amp;diff=11555</id>
		<title>Title list</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Title_list&amp;diff=11555"/>
		<updated>2015-02-03T06:35:09Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* 00040138 - System Firmware */&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|v8202]]&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|v8203]]&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]], [[9.5.0-22|v16384]]&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]], [[9.5.0-22|v16384]]&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]], [[9.5.0-22|v16384]]&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]], [[9.5.0-22|v16384]]&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]], [[9.5.0-22|v16384]]&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|v13313]], [[9.1.0-20J|v14336]], [[9.2.0-20|v15360]], [[9.3.0-21|v16402]], [[9.4.0-21|v17408]], [[9.5.0-22|v18432]]&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]], [[9.5.0-22|v15360]]&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]], [[9.5.0-22|v15360]]&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]], [[9.5.0-22|v352]]&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]], [[9.5.0-22|v272]]&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]], [[9.5.0-22|v288]]&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]], [[9.5.0-22|v352]]&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]], [[9.5.0-22|v9296]]&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]], [[9.5.0-22|v9296]]&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]], [[9.5.0-22|v3073]]&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]]&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&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]], [[9.5.0-22|v3073]]&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 (Memory-region: &amp;quot;SYSTEM&amp;quot;)&lt;br /&gt;
| [[1.0.0-0|v0]]&lt;br /&gt;
|-&lt;br /&gt;
| 20008003&lt;br /&gt;
| [[New_3DS]] SAFE_MODE NS (Memory-region: &amp;quot;SYSTEM&amp;quot;)&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]], v15043, [[8.0.0-18|v15047]], [[9.0.0-20|v17120]], [[9.3.0-21|v18182]], [[9.5.0-22|v19216]]&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]], [[9.5.0-22|v19218]]&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]], v3601, [[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]], v1553, [[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>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Camera_Services&amp;diff=11342</id>
		<title>Camera Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Camera_Services&amp;diff=11342"/>
		<updated>2015-01-02T05:31:04Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==cam:c (PORT_REG) ==&lt;br /&gt;
&lt;br /&gt;
==cam:s (PORT_CAL) ==&lt;br /&gt;
&lt;br /&gt;
==cam:q (PORT_QTM) ==&lt;br /&gt;
This was added with New3DS.&lt;br /&gt;
&lt;br /&gt;
==cam:u (PORT_USER)==&lt;br /&gt;
&lt;br /&gt;
== y2r:u ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| SetInputFormat(u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| SetOutputFormat(u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| SetRotation(u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| SetBlockAlignment(u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0040&lt;br /&gt;
| SetTransferEndInterrupt(bool)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| GetTransferEndEvent(Handle*)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100102&lt;br /&gt;
| SetSendingY(Handle, unsigned int, unsigned int, short, short). This DMAs from 0x1EE02000 into your buf.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110102&lt;br /&gt;
| SetSendingU(Handle, unsigned int, unsigned int, short, short). This DMAs from 0x1EE02080 into your buf.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120102&lt;br /&gt;
| SetSendingV(Handle, unsigned int, unsigned int, short, short). This DMAs from 0x1EE02100 into your buf.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130102&lt;br /&gt;
| This DMAs from 0x1EE02180 into your buf.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180102&lt;br /&gt;
| SetReceiving(Handle, unsigned int, unsigned int, short, short). This DMAs from 0x1EE02200 into your buf.&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0040&lt;br /&gt;
| SetInputLineWidth(short)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0040&lt;br /&gt;
| SetInputLines(short)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200040&lt;br /&gt;
| SetStandardCoefficient(u8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220040&lt;br /&gt;
| SetAlpha(short)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260000&lt;br /&gt;
| StartConversion&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| StopConversion&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| IsBusyConversion(bool *)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| PingProcess(unsigned char *)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| DriverInitialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| DriverFinalize&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Shader_Instruction_Set&amp;diff=10882</id>
		<title>GPU/Shader Instruction Set</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Shader_Instruction_Set&amp;diff=10882"/>
		<updated>2014-11-27T02:47:52Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: Undo revision 10881 by Normmatt (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GFX]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
A compiled shader binary is comprised of two parts : the main instruction sequence and the operand descriptor table. These are both sent to the GPU around the same time but using separate [[GPU Commands]]. Instructions (such as format 1 instruction) may reference operand descriptors. When such is the case, the operand descriptor ID is the offset, in words, of the descriptor within the table.&lt;br /&gt;
Both instructions and descriptors are coded in little endian.&lt;br /&gt;
Basic implementations of the following specification can be found at [https://github.com/smealum/aemstro] and [https://github.com/neobrain/nihstro]&lt;br /&gt;
Please note that this page is being written as the instruction set is reverse engineered; as such it may very well contain mistakes.&lt;br /&gt;
&lt;br /&gt;
Nomenclature :&lt;br /&gt;
&lt;br /&gt;
- opcode names with I appended to them are the same as their non-I version, except they use the inverted instruction format, giving 7 bits to SRC2 (and access to uniforms) and 5 bits to SRC1&lt;br /&gt;
&lt;br /&gt;
- opcode names with U appended to them are the same as their non-U version, except they are executed conditionally based on the value of a uniform boolean.&lt;br /&gt;
&lt;br /&gt;
- opcode names with C appended to them are the same as their non-C version, except they are executed conditionally based on a logical expression specified in the instruction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instruction formats ==&lt;br /&gt;
&lt;br /&gt;
Format 1 : (used for register operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 2 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0xC&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 1i : (used for register operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0xE&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 2 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 1u : (used for unary register operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0xC&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 1c : (used for comparison operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0xE&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 2 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x3&lt;br /&gt;
|  Comparison operator for Y (CMPY)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x3&lt;br /&gt;
|  Comparison operator for X (CMPX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1B&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 2 : (used for flow control instructions)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Number of instructions (NUM)&lt;br /&gt;
|-&lt;br /&gt;
|  0xA&lt;br /&gt;
|  0xC&lt;br /&gt;
|  Destination offset (in words) (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Condition boolean operator (CONDOP)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Y negation bit (NEGY)&lt;br /&gt;
|-&lt;br /&gt;
|  0x19&lt;br /&gt;
|  0x1&lt;br /&gt;
|  X negation bit (NEGX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 3 : (used for uniform-based conditional flow control instructions)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Number of instructions ? (NUM)&lt;br /&gt;
|-&lt;br /&gt;
|  0xA&lt;br /&gt;
|  0xC&lt;br /&gt;
|  Destination offset (in words) (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x4&lt;br /&gt;
|  Uniform ID (BOOL/INT)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 4 : (used for SETEMIT)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Primitive ID (PRIMID)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Vertex ID (VTXID)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 5 : (used for MAD)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x5&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 3 register (SRC3)&lt;br /&gt;
|-&lt;br /&gt;
|  0xA&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 2 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x11&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1D&lt;br /&gt;
|  0x3&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Opcode&lt;br /&gt;
!  Format&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x00&lt;br /&gt;
|  1&lt;br /&gt;
|  ADD&lt;br /&gt;
|  Adds two vectors component by component; DST[i] = SRC1[i]+SRC2[i] for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x01&lt;br /&gt;
|  1&lt;br /&gt;
|  DP3&lt;br /&gt;
|  Computes dot product on 3-component vectors; DST = SRC1.SRC2&lt;br /&gt;
|-&lt;br /&gt;
|  0x02&lt;br /&gt;
|  1&lt;br /&gt;
|  DP4&lt;br /&gt;
|  Computes dot product on 4-component vectors; DST = SRC1.SRC2&lt;br /&gt;
|-&lt;br /&gt;
|  0x03&lt;br /&gt;
|  1&lt;br /&gt;
|  DPH&lt;br /&gt;
|  Computes dot product on a 4-component vector and a 3-component one with 1.0 appended to it; DST = SRC1.SRC2 (with SRC2 homogenous)&lt;br /&gt;
|-&lt;br /&gt;
|  0x04&lt;br /&gt;
|  1&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x05&lt;br /&gt;
|  1u&lt;br /&gt;
|  EX2&lt;br /&gt;
|  Computes SRC1&#039;s exp component by component; DST[i] = EXP(SRC1[i]) for all i (modulo destination component masking) (base 2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x06&lt;br /&gt;
|  1u&lt;br /&gt;
|  LG2&lt;br /&gt;
|  Computes SRC1&#039;s log2 component by component; DST[i] = LOG2(SRC1[i]) for all i (modulo destination component masking) (base 2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x07&lt;br /&gt;
|  1u&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x08&lt;br /&gt;
|  1&lt;br /&gt;
|  MUL&lt;br /&gt;
|  Multiplies two vectors component by component; DST[i] = SRC1[i].SRC2[i] for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x09&lt;br /&gt;
|  1&lt;br /&gt;
|  SGE&lt;br /&gt;
|  Sets output if SRC1 is greater than or equal to SRC2; DST[i] = (SRC1[i] &amp;gt;= SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0A&lt;br /&gt;
|  1&lt;br /&gt;
|  SLT&lt;br /&gt;
|  Sets output if SRC1 is strictly less than SRC2; DST[i] = (SRC1[i] &amp;lt; SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0B&lt;br /&gt;
|  1u&lt;br /&gt;
|  FLR&lt;br /&gt;
|  Computes SRC1&#039;s floor component by component; DST[i] = FLOOR(SRC1[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0C&lt;br /&gt;
|  1&lt;br /&gt;
|  MAX&lt;br /&gt;
|  Takes the max of two vectors, component by component; DST[i] = MAX(SRC1[i], SRC2[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0D&lt;br /&gt;
|  1&lt;br /&gt;
|  MIN&lt;br /&gt;
|  Takes the min of two vectors, component by component; DST[i] = MIN(SRC1[i], SRC2[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0E&lt;br /&gt;
|  1u&lt;br /&gt;
|  RCP&lt;br /&gt;
|  Computes the reciprocal of the vector, component by component; DST[i] = 1/SRC1[i] for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0F&lt;br /&gt;
|  1u&lt;br /&gt;
|  RSQ&lt;br /&gt;
|  Computes the reciprocal of the square root of the vector, component by component; DST[i] = 1/sqrt(SRC1[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
| ???&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| ?&lt;br /&gt;
| ???&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x12&lt;br /&gt;
|  1u&lt;br /&gt;
|  ARL&lt;br /&gt;
|  Address Register Load; sets (a0, a1, _, _) to SRC1 (cast to integer).&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  1u&lt;br /&gt;
|  MOV&lt;br /&gt;
|  Moves value from one register to another; DST = SRC1.&lt;br /&gt;
|-&lt;br /&gt;
|  0x14&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x17&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  1i&lt;br /&gt;
|  DPHI&lt;br /&gt;
|  Computes dot product on a 4-component vector and a 3-component one with 1.0 appended to it; DST = SRC1.SRC2 (with SRC2 homogenous)&lt;br /&gt;
|-&lt;br /&gt;
|  0x19&lt;br /&gt;
|  1i&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  1i&lt;br /&gt;
|  SGEI&lt;br /&gt;
|  Sets output if SRC1 is greater than or equal to SRC2; DST[i] = (SRC1[i] &amp;gt;= SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1B&lt;br /&gt;
|  1i&lt;br /&gt;
|  SLTI&lt;br /&gt;
|  Sets output if SRC1 is strictly less than SRC2; DST[i] = (SRC1[i] &amp;lt; SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1C&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1D&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1E&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1F&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x20&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x21&lt;br /&gt;
|  1&lt;br /&gt;
|  END2&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x22&lt;br /&gt;
|  1&lt;br /&gt;
|  END1&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x23&lt;br /&gt;
|  2&lt;br /&gt;
|  BREAKC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then breaks out of LOOP block.&lt;br /&gt;
|-&lt;br /&gt;
|  0x24&lt;br /&gt;
|  2&lt;br /&gt;
|  CALL&lt;br /&gt;
|  Jumps to DST and executes instructions until it reaches DST+NUM instructions&lt;br /&gt;
|-&lt;br /&gt;
|  0x25&lt;br /&gt;
|  2&lt;br /&gt;
|  CALLC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then jumps to DST and executes instructions until it reaches DST+NUM instructions, else does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|  0x26&lt;br /&gt;
|  3&lt;br /&gt;
|  CALLU&lt;br /&gt;
|  Jumps to DST and executes instructions until it reaches DST+NUM instructions if BOOL is true&lt;br /&gt;
|-&lt;br /&gt;
|  0x27&lt;br /&gt;
|  3&lt;br /&gt;
|  IFU&lt;br /&gt;
|  If condition BOOL is true, then executes instructions until DST, then jumps to DST+NUM; else, jumps to DST.&lt;br /&gt;
|-&lt;br /&gt;
|  0x28&lt;br /&gt;
|  2&lt;br /&gt;
|  IFC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then executes instructions until DST, then jumps to DST+NUM; else, jumps to DST&lt;br /&gt;
|-&lt;br /&gt;
|  0x29&lt;br /&gt;
|  3&lt;br /&gt;
|  FORLOOP&lt;br /&gt;
|  Loops over the code between itself and DST. Increments lcnt after each loop. Stops looping once lcnt reaches the value contained by the integer uniform specified by INT. (i0-i7)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2A&lt;br /&gt;
|  0 (no param)&lt;br /&gt;
|  EMIT&lt;br /&gt;
|  (geometry shader only) Emits a vertex (and primitive if PRIMID is non-zero). SETEMIT must be called before this.&lt;br /&gt;
|-&lt;br /&gt;
|  0x2B&lt;br /&gt;
|  4&lt;br /&gt;
|  SETEMIT&lt;br /&gt;
|  (geometry shader only) Sets VTXID and PRIMID for the next EMIT instruction. VTXID is the ID of the vertex about to be emitted within the primitive, while PRIMID is zero if we are just emitting a single vertex and non-zero if are emitting a vertex and primitive simultaneously. Note that the output vertex buffer (which holds 4 vertices) is &#039;&#039;&#039;not&#039;&#039;&#039; cleared when the primitive is emitted, meaning that vertices from the previous primitive can be reused for the current one. (this is still a working hypothesis and unconfirmed)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2C&lt;br /&gt;
|  2&lt;br /&gt;
|  JMPC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then jumps to DST, else does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|  0x2D&lt;br /&gt;
|  3&lt;br /&gt;
|  JMPU&lt;br /&gt;
|  If condition BOOL is true, then jumps to DST, else does nothing. It seems possible that having NUM = 1 will jump if BOOL is false instead, though this is unconfirmed.&lt;br /&gt;
|-&lt;br /&gt;
|  0x2E-0x2F&lt;br /&gt;
|  1c&lt;br /&gt;
|  CMP&lt;br /&gt;
|  Sets booleans cmp.x and cmp.y based on the operand&#039;s x and y components and the CMPX and CMPY comparison operators respectively. See [[#Comparison_operator|below]] for details about operators.&lt;br /&gt;
|-&lt;br /&gt;
|  0x30-0x37&lt;br /&gt;
|  5&lt;br /&gt;
|  LRP&lt;br /&gt;
|  Does linear interpolation between two vectors, using a third as the interpolation factor, component by component; DST[i] = SRC1[i].(1.0 - SRC3[i]) + SRC2[i].(SRC3[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x38-0x3F&lt;br /&gt;
|  5&lt;br /&gt;
|  MAD&lt;br /&gt;
|  Multiplies two vectors and adds a third one component by component; DST[i] = SRC3[i] + SRC2[i].SRC1[i] for all i (modulo destination component masking)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operand descriptors ==&lt;br /&gt;
Sizes below are in bits, not bytes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x4&lt;br /&gt;
|  Destination component mask. Bit 3 = x, 2 = y, 1 = z, 0 = w.&lt;br /&gt;
|-&lt;br /&gt;
|  0x4&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Source 1 negation bit&lt;br /&gt;
|-&lt;br /&gt;
|  0x5&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Source 1 component selector&lt;br /&gt;
|-&lt;br /&gt;
|  0xD&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Source 2 negation bit&lt;br /&gt;
|-&lt;br /&gt;
|  0xE&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Source 2 component selector&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Source 3 negation bit&lt;br /&gt;
|-&lt;br /&gt;
|  0x17&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Source 3 component selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Component selector :&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;
|  0x2&lt;br /&gt;
|  Component 3 value&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Component 2 value&lt;br /&gt;
|-&lt;br /&gt;
|  0x4&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Component 1 value&lt;br /&gt;
|-&lt;br /&gt;
|  0x6&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Component 0 value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Component&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  x&lt;br /&gt;
|-&lt;br /&gt;
|  0x1&lt;br /&gt;
|  y&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  z&lt;br /&gt;
|-&lt;br /&gt;
|  0x3&lt;br /&gt;
|  w&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The component selector enables swizzling. For example, component selector 0x1B is equivalent to .xyzw, while 0x55 is equivalent to .yyyy.&lt;br /&gt;
&lt;br /&gt;
== Relative addressing ==&lt;br /&gt;
&lt;br /&gt;
There are 3 global address registers : a0, a1 and a2 = lcnt (loop counter). For format 1 instructions, when IDX != 0, the value of the corresponding address register is added to SRC1&#039;s value.&lt;br /&gt;
&lt;br /&gt;
For example, if IDX = 2, a1 = 3 and SRC1 = c8, then instead SRC1+a1 = c11 will be used for the instruction.&lt;br /&gt;
&lt;br /&gt;
a0 and a1 can be set manually through the ARL instruction. lcnt is set automatically by the LOOP instruction. Note that lcnt is still accessible and valid after exiting a LOOP block.&lt;br /&gt;
&lt;br /&gt;
== Comparison operator ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  CMPX/CMPY raw value&lt;br /&gt;
!  Operator name&lt;br /&gt;
!  Expression&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  EQ&lt;br /&gt;
|  src1 == src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x1&lt;br /&gt;
|  NE&lt;br /&gt;
|  src1 != src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  LT&lt;br /&gt;
|  src1 &amp;lt; src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x3&lt;br /&gt;
|  LE&lt;br /&gt;
|  src1 &amp;lt;= src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x4&lt;br /&gt;
|  GT&lt;br /&gt;
|  src1 &amp;gt; src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x5&lt;br /&gt;
|  GE&lt;br /&gt;
|  src1 &amp;gt;= src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x6&lt;br /&gt;
|  ??&lt;br /&gt;
|  true ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  ??&lt;br /&gt;
|  true ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
6 and 7 seem to always return true.&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
A number of format 2 instructions are executed conditionally. These conditions are based on two boolean registers which can be set with CMP : cmp.x and cmp.y.&lt;br /&gt;
&lt;br /&gt;
Conditional instructions include 3 parameters : CONDOP, NEGX and NEGY. NEGX and NEGY determine whether the conditional expression will use cmp.x or !cmp.x, and cmp.y or !cmp.y respectively (NEGX set means we use cmp.x, and NEGX not set means we use !cmp.x). CONDOP describes the actual expression. There are four conditional expression formats :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  CONDOP raw value&lt;br /&gt;
!  Expression&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  &amp;lt;nowiki&amp;gt;[!]cmp.x || [!]cmp.y&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|  OR&lt;br /&gt;
|-&lt;br /&gt;
|  0x1&lt;br /&gt;
|  &amp;lt;nowiki&amp;gt;[!]cmp.x &amp;amp;&amp;amp; [!]cmp.y&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|  AND&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  [!]cmp.X&lt;br /&gt;
|  X&lt;br /&gt;
|-&lt;br /&gt;
|  0x3&lt;br /&gt;
|  [!]cmp.y&lt;br /&gt;
|  Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example, with CONDOP=1, NEGX=1 and NEGY=0, the resulting expression would be (cmp.x &amp;amp;&amp;amp; !cmp.y).&lt;br /&gt;
&lt;br /&gt;
== Registers ==&lt;br /&gt;
Most registers (all the ones within the 0x00-0x7F range) are float[4] vectors. There are also boolean registers (b0-b7) and integer registers (i0-i7). How the latter ones are set is as of yet unknown.&lt;br /&gt;
&lt;br /&gt;
Attribute (input, RO) registers are located within the 0x0-0xF range. What data they are fed is specified by the CPU.&lt;br /&gt;
&lt;br /&gt;
Output (WO) registers are also located within the 0x0-0xF range. What type of data they are contain is specified by the CPU.&lt;br /&gt;
&lt;br /&gt;
Temporary (RW) register are located within the 0x10-0x1F range. They can contain any type of data.&lt;br /&gt;
&lt;br /&gt;
Uniform (RO) registers are located within the 0x20-0x7F range. Their content is set by the CPU.&lt;br /&gt;
&lt;br /&gt;
SRC2 being only 5 bits long rather than 7 bits like its friend SRC1, it can only access v (input attribute) and r (temporary) registers.&lt;br /&gt;
&lt;br /&gt;
Registers in the 0x88-0x97 range are uniform booleans.&lt;br /&gt;
&lt;br /&gt;
It appears that writing twice to the same output register can cause problems, such as the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
DST mapping :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  DST raw value&lt;br /&gt;
!  Register name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0-0x7&lt;br /&gt;
|  o0-o7&lt;br /&gt;
|  Output registers.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10-0x1F&lt;br /&gt;
|  r0-r15&lt;br /&gt;
|  Temporary registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SRC mapping :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  SRC1 raw value&lt;br /&gt;
!  Register name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0-0x7&lt;br /&gt;
|  v0-v7&lt;br /&gt;
|  Input attribute registers.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10-0x1F&lt;br /&gt;
|  r0-r15&lt;br /&gt;
|  Temporary registers.&lt;br /&gt;
|-&lt;br /&gt;
|  0x20-0x7F&lt;br /&gt;
|  c0-c95&lt;br /&gt;
|  Vector uniform registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that 5bit SRC registers (SRC2 in format 1 for example) can&#039;t access c0-c95 because they don&#039;t have enough bits.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/Shader_Instruction_Set&amp;diff=10881</id>
		<title>GPU/Shader Instruction Set</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/Shader_Instruction_Set&amp;diff=10881"/>
		<updated>2014-11-27T02:37:39Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GFX]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
A compiled shader binary is comprised of two parts : the main instruction sequence and the operand descriptor table. These are both sent to the GPU around the same time but using separate [[GPU Commands]]. Instructions (such as format 1 instruction) may reference operand descriptors. When such is the case, the operand descriptor ID is the offset, in words, of the descriptor within the table.&lt;br /&gt;
Both instructions and descriptors are coded in little endian.&lt;br /&gt;
Basic implementations of the following specification can be found at [https://github.com/smealum/aemstro] and [https://github.com/neobrain/nihstro]&lt;br /&gt;
Please note that this page is being written as the instruction set is reverse engineered; as such it may very well contain mistakes.&lt;br /&gt;
&lt;br /&gt;
Nomenclature :&lt;br /&gt;
&lt;br /&gt;
- opcode names with I appended to them are the same as their non-I version, except they use the inverted instruction format, giving 7 bits to SRC2 (and access to uniforms) and 5 bits to SRC1&lt;br /&gt;
&lt;br /&gt;
- opcode names with U appended to them are the same as their non-U version, except they are executed conditionally based on the value of a uniform boolean.&lt;br /&gt;
&lt;br /&gt;
- opcode names with C appended to them are the same as their non-C version, except they are executed conditionally based on a logical expression specified in the instruction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instruction formats ==&lt;br /&gt;
&lt;br /&gt;
Format 1 : (used for register operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 2 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0xC&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 1i : (used for register operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0xE&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 2 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 1u : (used for unary register operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0xC&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 1c : (used for comparison operations)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0xE&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 2 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Address register index (IDX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  0x3&lt;br /&gt;
|  Comparison operator for Y (CMPY)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x3&lt;br /&gt;
|  Comparison operator for X (CMPX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1B&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 2 : (used for flow control instructions)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Number of instructions (NUM)&lt;br /&gt;
|-&lt;br /&gt;
|  0xA&lt;br /&gt;
|  0xC&lt;br /&gt;
|  Destination offset (in words) (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Condition boolean operator (CONDOP)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Y negation bit (NEGY)&lt;br /&gt;
|-&lt;br /&gt;
|  0x19&lt;br /&gt;
|  0x1&lt;br /&gt;
|  X negation bit (NEGX)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 3 : (used for uniform-based conditional flow control instructions)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Number of instructions ? (NUM)&lt;br /&gt;
|-&lt;br /&gt;
|  0xA&lt;br /&gt;
|  0xC&lt;br /&gt;
|  Destination offset (in words) (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x4&lt;br /&gt;
|  Uniform ID (BOOL/INT)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 4 : (used for SETEMIT)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Primitive ID (PRIMID)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Vertex ID (VTXID)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  0x6&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format 5 : (used for MAD)&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 (bits)&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Operand descriptor ID (DESC)&lt;br /&gt;
|-&lt;br /&gt;
|  0x5&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Source 3 register (SRC3)&lt;br /&gt;
|-&lt;br /&gt;
|  0xA&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 2 register (SRC2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x11&lt;br /&gt;
|  0x7&lt;br /&gt;
|  Source 1 register (SRC1)&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  0x5&lt;br /&gt;
|  Destination register (DST)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1D&lt;br /&gt;
|  0x3&lt;br /&gt;
|  Opcode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Opcode&lt;br /&gt;
!  Format&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x00&lt;br /&gt;
|  1&lt;br /&gt;
|  ADD&lt;br /&gt;
|  Adds two vectors component by component; DST[i] = SRC1[i]+SRC2[i] for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x01&lt;br /&gt;
|  1&lt;br /&gt;
|  DP3&lt;br /&gt;
|  Computes dot product on 3-component vectors; DST = SRC1.SRC2&lt;br /&gt;
|-&lt;br /&gt;
|  0x02&lt;br /&gt;
|  1&lt;br /&gt;
|  DP4&lt;br /&gt;
|  Computes dot product on 4-component vectors; DST = SRC1.SRC2&lt;br /&gt;
|-&lt;br /&gt;
|  0x03&lt;br /&gt;
|  1&lt;br /&gt;
|  DPH&lt;br /&gt;
|  Computes dot product on a 4-component vector and a 3-component one with 1.0 appended to it; DST = SRC1.SRC2 (with SRC2 homogenous)&lt;br /&gt;
|-&lt;br /&gt;
|  0x04&lt;br /&gt;
|  1&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x05&lt;br /&gt;
|  1u&lt;br /&gt;
|  EX2&lt;br /&gt;
|  Computes SRC1&#039;s exp component by component; DST[i] = EXP(SRC1[i]) for all i (modulo destination component masking) (base 2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x06&lt;br /&gt;
|  1u&lt;br /&gt;
|  LG2&lt;br /&gt;
|  Computes SRC1&#039;s log2 component by component; DST[i] = LOG2(SRC1[i]) for all i (modulo destination component masking) (base 2)&lt;br /&gt;
|-&lt;br /&gt;
|  0x07&lt;br /&gt;
|  1u&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x08&lt;br /&gt;
|  1&lt;br /&gt;
|  MUL&lt;br /&gt;
|  Multiplies two vectors component by component; DST[i] = SRC1[i].SRC2[i] for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x09&lt;br /&gt;
|  1&lt;br /&gt;
|  SGE&lt;br /&gt;
|  Sets output if SRC1 is greater than or equal to SRC2; DST[i] = (SRC1[i] &amp;gt;= SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0A&lt;br /&gt;
|  1&lt;br /&gt;
|  SLT&lt;br /&gt;
|  Sets output if SRC1 is strictly less than SRC2; DST[i] = (SRC1[i] &amp;lt; SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0B&lt;br /&gt;
|  1u&lt;br /&gt;
|  FLR&lt;br /&gt;
|  Computes SRC1&#039;s floor component by component; DST[i] = FLOOR(SRC1[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0C&lt;br /&gt;
|  1&lt;br /&gt;
|  MAX&lt;br /&gt;
|  Takes the max of two vectors, component by component; DST[i] = MAX(SRC1[i], SRC2[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0D&lt;br /&gt;
|  1&lt;br /&gt;
|  MIN&lt;br /&gt;
|  Takes the min of two vectors, component by component; DST[i] = MIN(SRC1[i], SRC2[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0E&lt;br /&gt;
|  1u&lt;br /&gt;
|  RCP&lt;br /&gt;
|  Computes the reciprocal of the vector, component by component; DST[i] = 1/SRC1[i] for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0F&lt;br /&gt;
|  1u&lt;br /&gt;
|  RSQ&lt;br /&gt;
|  Computes the reciprocal of the square root of the vector, component by component; DST[i] = 1/sqrt(SRC1[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
| ???&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| ?&lt;br /&gt;
| ???&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x12&lt;br /&gt;
|  1u&lt;br /&gt;
|  ARL&lt;br /&gt;
|  Address Register Load; sets (a0, a1, _, _) to SRC1 (cast to integer).&lt;br /&gt;
|-&lt;br /&gt;
|  0x13&lt;br /&gt;
|  1u&lt;br /&gt;
|  MOV&lt;br /&gt;
|  Moves value from one register to another; DST = SRC1.&lt;br /&gt;
|-&lt;br /&gt;
|  0x14&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x15&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x17&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x18&lt;br /&gt;
|  1i&lt;br /&gt;
|  DPHI&lt;br /&gt;
|  Computes dot product on a 4-component vector and a 3-component one with 1.0 appended to it; DST = SRC1.SRC2 (with SRC2 homogenous)&lt;br /&gt;
|-&lt;br /&gt;
|  0x19&lt;br /&gt;
|  1i&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1A&lt;br /&gt;
|  1i&lt;br /&gt;
|  SGEI&lt;br /&gt;
|  Sets output if SRC1 is greater than or equal to SRC2; DST[i] = (SRC1[i] &amp;gt;= SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1B&lt;br /&gt;
|  1i&lt;br /&gt;
|  SLTI&lt;br /&gt;
|  Sets output if SRC1 is strictly less than SRC2; DST[i] = (SRC1[i] &amp;lt; SRC2[i]) ? 1.0 : 0.0 for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x1C&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1D&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1E&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x1F&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x20&lt;br /&gt;
|  ?&lt;br /&gt;
|  ???&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x21&lt;br /&gt;
|  1&lt;br /&gt;
|  END2&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x22&lt;br /&gt;
|  1&lt;br /&gt;
|  END1&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x23&lt;br /&gt;
|  2&lt;br /&gt;
|  BREAKC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then breaks out of LOOP block.&lt;br /&gt;
|-&lt;br /&gt;
|  0x24&lt;br /&gt;
|  2&lt;br /&gt;
|  CALL&lt;br /&gt;
|  Jumps to DST and executes instructions until it reaches DST+NUM instructions&lt;br /&gt;
|-&lt;br /&gt;
|  0x25&lt;br /&gt;
|  2&lt;br /&gt;
|  CALLC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then jumps to DST and executes instructions until it reaches DST+NUM instructions, else does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|  0x26&lt;br /&gt;
|  3&lt;br /&gt;
|  CALLU&lt;br /&gt;
|  Jumps to DST and executes instructions until it reaches DST+NUM instructions if BOOL is true&lt;br /&gt;
|-&lt;br /&gt;
|  0x27&lt;br /&gt;
|  3&lt;br /&gt;
|  IFU&lt;br /&gt;
|  If condition BOOL is true, then executes instructions until DST, then jumps to DST+NUM; else, jumps to DST.&lt;br /&gt;
|-&lt;br /&gt;
|  0x28&lt;br /&gt;
|  1c&lt;br /&gt;
|  IFC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then executes instructions until DST, then jumps to DST+NUM; else, jumps to DST&lt;br /&gt;
|-&lt;br /&gt;
|  0x29&lt;br /&gt;
|  3&lt;br /&gt;
|  FORLOOP&lt;br /&gt;
|  Loops over the code between itself and DST. Increments lcnt after each loop. Stops looping once lcnt reaches the value contained by the integer uniform specified by INT. (i0-i7)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2A&lt;br /&gt;
|  0 (no param)&lt;br /&gt;
|  EMIT&lt;br /&gt;
|  (geometry shader only) Emits a vertex (and primitive if PRIMID is non-zero). SETEMIT must be called before this.&lt;br /&gt;
|-&lt;br /&gt;
|  0x2B&lt;br /&gt;
|  4&lt;br /&gt;
|  SETEMIT&lt;br /&gt;
|  (geometry shader only) Sets VTXID and PRIMID for the next EMIT instruction. VTXID is the ID of the vertex about to be emitted within the primitive, while PRIMID is zero if we are just emitting a single vertex and non-zero if are emitting a vertex and primitive simultaneously. Note that the output vertex buffer (which holds 4 vertices) is &#039;&#039;&#039;not&#039;&#039;&#039; cleared when the primitive is emitted, meaning that vertices from the previous primitive can be reused for the current one. (this is still a working hypothesis and unconfirmed)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2C&lt;br /&gt;
|  2&lt;br /&gt;
|  JMPC&lt;br /&gt;
|  If condition (see [[#Conditions|below]] for details) is true, then jumps to DST, else does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|  0x2D&lt;br /&gt;
|  3&lt;br /&gt;
|  JMPU&lt;br /&gt;
|  If condition BOOL is true, then jumps to DST, else does nothing. It seems possible that having NUM = 1 will jump if BOOL is false instead, though this is unconfirmed.&lt;br /&gt;
|-&lt;br /&gt;
|  0x2E-0x2F&lt;br /&gt;
|  1c&lt;br /&gt;
|  CMP&lt;br /&gt;
|  Sets booleans cmp.x and cmp.y based on the operand&#039;s x and y components and the CMPX and CMPY comparison operators respectively. See [[#Comparison_operator|below]] for details about operators.&lt;br /&gt;
|-&lt;br /&gt;
|  0x30-0x37&lt;br /&gt;
|  5&lt;br /&gt;
|  LRP&lt;br /&gt;
|  Does linear interpolation between two vectors, using a third as the interpolation factor, component by component; DST[i] = SRC1[i].(1.0 - SRC3[i]) + SRC2[i].(SRC3[i]) for all i (modulo destination component masking)&lt;br /&gt;
|-&lt;br /&gt;
|  0x38-0x3F&lt;br /&gt;
|  5&lt;br /&gt;
|  MAD&lt;br /&gt;
|  Multiplies two vectors and adds a third one component by component; DST[i] = SRC3[i] + SRC2[i].SRC1[i] for all i (modulo destination component masking)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Operand descriptors ==&lt;br /&gt;
Sizes below are in bits, not bytes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  0x4&lt;br /&gt;
|  Destination component mask. Bit 3 = x, 2 = y, 1 = z, 0 = w.&lt;br /&gt;
|-&lt;br /&gt;
|  0x4&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Source 1 negation bit&lt;br /&gt;
|-&lt;br /&gt;
|  0x5&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Source 1 component selector&lt;br /&gt;
|-&lt;br /&gt;
|  0xD&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Source 2 negation bit&lt;br /&gt;
|-&lt;br /&gt;
|  0xE&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Source 2 component selector&lt;br /&gt;
|-&lt;br /&gt;
|  0x16&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Source 3 negation bit&lt;br /&gt;
|-&lt;br /&gt;
|  0x17&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Source 3 component selector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Component selector :&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;
|  0x2&lt;br /&gt;
|  Component 3 value&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Component 2 value&lt;br /&gt;
|-&lt;br /&gt;
|  0x4&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Component 1 value&lt;br /&gt;
|-&lt;br /&gt;
|  0x6&lt;br /&gt;
|  0x2&lt;br /&gt;
|  Component 0 value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Component&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  x&lt;br /&gt;
|-&lt;br /&gt;
|  0x1&lt;br /&gt;
|  y&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  z&lt;br /&gt;
|-&lt;br /&gt;
|  0x3&lt;br /&gt;
|  w&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The component selector enables swizzling. For example, component selector 0x1B is equivalent to .xyzw, while 0x55 is equivalent to .yyyy.&lt;br /&gt;
&lt;br /&gt;
== Relative addressing ==&lt;br /&gt;
&lt;br /&gt;
There are 3 global address registers : a0, a1 and a2 = lcnt (loop counter). For format 1 instructions, when IDX != 0, the value of the corresponding address register is added to SRC1&#039;s value.&lt;br /&gt;
&lt;br /&gt;
For example, if IDX = 2, a1 = 3 and SRC1 = c8, then instead SRC1+a1 = c11 will be used for the instruction.&lt;br /&gt;
&lt;br /&gt;
a0 and a1 can be set manually through the ARL instruction. lcnt is set automatically by the LOOP instruction. Note that lcnt is still accessible and valid after exiting a LOOP block.&lt;br /&gt;
&lt;br /&gt;
== Comparison operator ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  CMPX/CMPY raw value&lt;br /&gt;
!  Operator name&lt;br /&gt;
!  Expression&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  EQ&lt;br /&gt;
|  src1 == src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x1&lt;br /&gt;
|  NE&lt;br /&gt;
|  src1 != src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  LT&lt;br /&gt;
|  src1 &amp;lt; src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x3&lt;br /&gt;
|  LE&lt;br /&gt;
|  src1 &amp;lt;= src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x4&lt;br /&gt;
|  GT&lt;br /&gt;
|  src1 &amp;gt; src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x5&lt;br /&gt;
|  GE&lt;br /&gt;
|  src1 &amp;gt;= src2&lt;br /&gt;
|-&lt;br /&gt;
|  0x6&lt;br /&gt;
|  ??&lt;br /&gt;
|  true ?&lt;br /&gt;
|-&lt;br /&gt;
|  0x7&lt;br /&gt;
|  ??&lt;br /&gt;
|  true ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
6 and 7 seem to always return true.&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
A number of format 2 instructions are executed conditionally. These conditions are based on two boolean registers which can be set with CMP : cmp.x and cmp.y.&lt;br /&gt;
&lt;br /&gt;
Conditional instructions include 3 parameters : CONDOP, NEGX and NEGY. NEGX and NEGY determine whether the conditional expression will use cmp.x or !cmp.x, and cmp.y or !cmp.y respectively (NEGX set means we use cmp.x, and NEGX not set means we use !cmp.x). CONDOP describes the actual expression. There are four conditional expression formats :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  CONDOP raw value&lt;br /&gt;
!  Expression&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0&lt;br /&gt;
|  &amp;lt;nowiki&amp;gt;[!]cmp.x || [!]cmp.y&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|  OR&lt;br /&gt;
|-&lt;br /&gt;
|  0x1&lt;br /&gt;
|  &amp;lt;nowiki&amp;gt;[!]cmp.x &amp;amp;&amp;amp; [!]cmp.y&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|  AND&lt;br /&gt;
|-&lt;br /&gt;
|  0x2&lt;br /&gt;
|  [!]cmp.X&lt;br /&gt;
|  X&lt;br /&gt;
|-&lt;br /&gt;
|  0x3&lt;br /&gt;
|  [!]cmp.y&lt;br /&gt;
|  Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example, with CONDOP=1, NEGX=1 and NEGY=0, the resulting expression would be (cmp.x &amp;amp;&amp;amp; !cmp.y).&lt;br /&gt;
&lt;br /&gt;
== Registers ==&lt;br /&gt;
Most registers (all the ones within the 0x00-0x7F range) are float[4] vectors. There are also boolean registers (b0-b7) and integer registers (i0-i7). How the latter ones are set is as of yet unknown.&lt;br /&gt;
&lt;br /&gt;
Attribute (input, RO) registers are located within the 0x0-0xF range. What data they are fed is specified by the CPU.&lt;br /&gt;
&lt;br /&gt;
Output (WO) registers are also located within the 0x0-0xF range. What type of data they are contain is specified by the CPU.&lt;br /&gt;
&lt;br /&gt;
Temporary (RW) register are located within the 0x10-0x1F range. They can contain any type of data.&lt;br /&gt;
&lt;br /&gt;
Uniform (RO) registers are located within the 0x20-0x7F range. Their content is set by the CPU.&lt;br /&gt;
&lt;br /&gt;
SRC2 being only 5 bits long rather than 7 bits like its friend SRC1, it can only access v (input attribute) and r (temporary) registers.&lt;br /&gt;
&lt;br /&gt;
Registers in the 0x88-0x97 range are uniform booleans.&lt;br /&gt;
&lt;br /&gt;
It appears that writing twice to the same output register can cause problems, such as the GPU hanging.&lt;br /&gt;
&lt;br /&gt;
DST mapping :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  DST raw value&lt;br /&gt;
!  Register name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0-0x7&lt;br /&gt;
|  o0-o7&lt;br /&gt;
|  Output registers.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10-0x1F&lt;br /&gt;
|  r0-r15&lt;br /&gt;
|  Temporary registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SRC mapping :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  SRC1 raw value&lt;br /&gt;
!  Register name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  0x0-0x7&lt;br /&gt;
|  v0-v7&lt;br /&gt;
|  Input attribute registers.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10-0x1F&lt;br /&gt;
|  r0-r15&lt;br /&gt;
|  Temporary registers.&lt;br /&gt;
|-&lt;br /&gt;
|  0x20-0x7F&lt;br /&gt;
|  c0-c95&lt;br /&gt;
|  Vector uniform registers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that 5bit SRC registers (SRC2 in format 1 for example) can&#039;t access c0-c95 because they don&#039;t have enough bits.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10737</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10737"/>
		<updated>2014-11-17T03:57:11Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* Textures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&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;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&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;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&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;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In certain cases there may be more data starting at offset 0x8 than what&#039;s listed above, before the CWAV.&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10694</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10694"/>
		<updated>2014-11-15T07:14:22Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* Textures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&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;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = unknown, non-zero = unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type: 0 = solid color(uses texture1 internally), 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type: 0 = solid color(uses texture4 internally), 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&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;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&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;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In certain cases there may be more data starting at offset 0x8 than what&#039;s listed above, before the CWAV.&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10690</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10690"/>
		<updated>2014-11-15T05:07:26Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&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;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = unknown, non-zero = unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type: 0 = solid color(uses texture1 internally), 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type: 0 = solid color(uses texture4 internally), 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| BGR888 [[GPU_Textures|GPU]] texture color-format value 0x6&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| BGR888 [[GPU_Textures|GPU]] texture color-format value 0x6&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| RGBA8888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&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;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&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;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In certain cases there may be more data starting at offset 0x8 than what&#039;s listed above, before the CWAV.&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10652</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=10652"/>
		<updated>2014-11-13T03:15:37Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=body_LZ.bin structure=&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;
| 0x4&lt;br /&gt;
| Version (Must be 1?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be less than 4?&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top Screen Frame Count (If 0 then solid color at 0x14, else texture at 0x18)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top Screen Solid Color (RGB8)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top Screen Texture Address (Rgb565 at (320*(Top Screen Frame Count))*240)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Frame Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Type (0=SolidColor, 2=Rgb565)&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture Address (Rgb565 at 320x240)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Nintendo_3DS_Sound&amp;diff=9826</id>
		<title>Nintendo 3DS Sound</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Nintendo_3DS_Sound&amp;diff=9826"/>
		<updated>2014-09-11T02:35:57Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nintendo 3DS Sound is the music playing and audio recording application that is included with all retail consoles.&lt;br /&gt;
&lt;br /&gt;
It loads audio files from the sd card. It supports MP3 and AAC encoded audio files and supports m3u playlists.&lt;br /&gt;
&lt;br /&gt;
== Playlist file format==&lt;br /&gt;
The application allows for user created playlists. They are stored on the SD card.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x04&lt;br /&gt;
| Magic bytes, &#039;O&#039;, &#039;V&#039;, &#039;A&#039;, &#039;F&#039; or &amp;quot;FAVO&amp;quot; endian corrected.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Always integer with value 16&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x04&lt;br /&gt;
| File size (0x26730)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Zero Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x02&lt;br /&gt;
| checksum (songs?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x02&lt;br /&gt;
| Icon ID (0-44) if id==-1 then loads custom icon from end of playlist?&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x02&lt;br /&gt;
| Song file count&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| 0x02&lt;br /&gt;
| Number of possible songs (usually 0x12C/300)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x04&lt;br /&gt;
| some kind of timestamp, for encryption (dosn&#039;t change when editing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| 0x01&lt;br /&gt;
| checksum (icon?, header?) (dosn&#039;t change when editing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| 0x01&lt;br /&gt;
| checksum (name?) (dosn&#039;t change when editing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x04&lt;br /&gt;
| always(?) integer with value 6&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x100 (avaiable 0x40)&lt;br /&gt;
| Playlist name stored in UTF-16&lt;br /&gt;
|-&lt;br /&gt;
| 0x120+(n*0x20C) =&amp;gt; n&amp;lt;300&lt;br /&gt;
| 692 (0x20C per song)&lt;br /&gt;
| File name stored in UTF-16. Repeats for the rest of the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2672F&lt;br /&gt;
| -&lt;br /&gt;
| End&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample reader ==&lt;br /&gt;
This is a basic example of how to read a 3DS playlist. I know that this works on my specific system; on any other system, it&#039;s liable to fail. I&#039;m not responsible if you hurt yourself.&lt;br /&gt;
&amp;lt;pre&amp;gt;/* This is free and unencumbered software released into the public domain.&lt;br /&gt;
/* Anyone is free to copy, modify, publish, use, compile, sell, or&lt;br /&gt;
/* distribute this software, either in source code form or as a compiled&lt;br /&gt;
/* binary, for any purpose, commercial or non-commercial, and by any&lt;br /&gt;
/* means.&lt;br /&gt;
&lt;br /&gt;
/* In jurisdictions that recognize copyright laws, the author or authors&lt;br /&gt;
/* of this software dedicate any and all copyright interest in the&lt;br /&gt;
/* software to the public domain. We make this dedication for the benefit&lt;br /&gt;
/* of the public at large and to the detriment of our heirs and&lt;br /&gt;
/* successors. We intend this dedication to be an overt act of&lt;br /&gt;
/* relinquishment in perpetuity of all present and future rights to this&lt;br /&gt;
/* software under copyright law.&lt;br /&gt;
/* &lt;br /&gt;
/* THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND,&lt;br /&gt;
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&lt;br /&gt;
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.&lt;br /&gt;
/* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR&lt;br /&gt;
/* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,&lt;br /&gt;
/* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR&lt;br /&gt;
/* OTHER DEALINGS IN THE SOFTWARE.&lt;br /&gt;
/*&lt;br /&gt;
/* For more information, please refer to &amp;lt;http://unlicense.org/&amp;gt; */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
uint8_t buf[0x26730];&lt;br /&gt;
uint16_t checksum, icon, songCount;&lt;br /&gt;
uint32_t timestamp;&lt;br /&gt;
uint8_t playlistName[0x100];&lt;br /&gt;
uint8_t songName[0x20C][299];&lt;br /&gt;
&lt;br /&gt;
void readUtf16AsAscii(uint8_t *input, uint8_t *output, uint16_t length, uint32_t offset) {&lt;br /&gt;
	uint16_t j=0;&lt;br /&gt;
	for (j=0; j&amp;lt;length; j++) {&lt;br /&gt;
		output[j] = input[(j*2)+offset];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char* argv[]) {&lt;br /&gt;
	uint16_t t=0;&lt;br /&gt;
	FILE *playlistFile;&lt;br /&gt;
&lt;br /&gt;
	if (argc != 2) {&lt;br /&gt;
		printf(&amp;quot;Usage: %s FILE\n&amp;quot;, argv[0]);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ((playlistFile = fopen(argv[1], &amp;quot;rb&amp;quot;)) == NULL) {&lt;br /&gt;
		printf(&amp;quot;Could not open %s.\n&amp;quot;, argv[1]);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (fread(buf, 1, 0x26730, playlistFile) != 0x26730) {&lt;br /&gt;
		printf(&amp;quot;Could not 0x26730 bytes from %s.\n&amp;quot;, argv[1]);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (!((buf[0] = &#039;O&#039;) &amp;amp;&amp;amp; (buf[1] = &#039;V&#039;) &amp;amp;&amp;amp; (buf[2] = &#039;F&#039;) &amp;amp;&amp;amp; (buf[3] = &#039;A&#039;))) {&lt;br /&gt;
		printf(&amp;quot;%s is not a 3DS playlist file.\n&amp;quot;, argv[1]);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	checksum  = (buf[0x11] &amp;lt;&amp;lt; 8)  | buf[0x10];&lt;br /&gt;
	icon      = (buf[0x13] &amp;lt;&amp;lt; 8)  | buf[0x12];&lt;br /&gt;
	songCount = (buf[0x15] &amp;lt;&amp;lt; 8)  | buf[0x14];&lt;br /&gt;
	timestamp = (buf[0x17] &amp;lt;&amp;lt; 24) | (buf[0x16] &amp;lt;&amp;lt; 16) | (buf[0x19] &amp;lt;&amp;lt; 8) | buf[0x18];&lt;br /&gt;
	readUtf16AsAscii(buf, playlistName, 0x100, 0x20);&lt;br /&gt;
	for (t=0; t&amp;lt;songCount; t++) readUtf16AsAscii(buf, songName[t], 0x20C, (0x120+(t*0x20C)));&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;Checksum:\t%04X\nIcon ID:\t%04X\nSong Count:\t%04X\nTimestamp:\t%08X\nPlaylist Name:\t\&amp;quot;%s\&amp;quot;\n&amp;quot;,&lt;br /&gt;
	checksum, icon, songCount, timestamp, playlistName);&lt;br /&gt;
&lt;br /&gt;
	for (t=0; t&amp;lt;songCount; t++) printf(&amp;quot;Name of song %03i: %s\n&amp;quot;, t, songName[t]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:Nintendo Software]]&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=9818</id>
		<title>CONFIG9 Registers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CONFIG9_Registers&amp;diff=9818"/>
		<updated>2014-09-10T01:46:47Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &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;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000000&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000001&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000004&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| REG_CARDCONF&lt;br /&gt;
| 0x1000000C&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000010&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10000200&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0x10010000&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| REG_UNITINFO&lt;br /&gt;
| 0x10010010&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REG_CARDCONF ==&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;
| 1-0&lt;br /&gt;
| Gamecard active controller select (0=NTRCARD, 1=?, 2=CTRCARD1, 3=CTRCARD2)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Depending on the gamecard controller that has been selected, one of the following gamecard registers will become active:&lt;br /&gt;
* Selecting NTRCARD will activate the register space at [[NTRCARD|0x10164000]].&lt;br /&gt;
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10004000]].&lt;br /&gt;
* Selecting CTRCARD2 will activate the register space at [[CTRCARD|0x10005000]].&lt;br /&gt;
&lt;br /&gt;
== 0x10000000, Hidden bootrom off-switch == &lt;br /&gt;
The ARM9 and ARM11 [[Memory_layout|bootroms]](+0x8000) are disabled by writing 1 to (u8*)0x10000000 and 1 to (u8*)0x10000001?(These two registers are written by the ARM9)&lt;br /&gt;
&lt;br /&gt;
Writing values here(u8 0x10000000+0) sets the specified bitmask. Thus, writing value 0x2 when the register(u8 0x10000000+0) was previously set to value 0x1 changes the value to 0x3. During the NATIVE_FIRM ARM9 kernel startup, it will check if bitmask 0x2 in this register is set. If that bitmask is not set, the console-unique portions of the two console-unique TWL [[AES|keyslots]] are then initialized. The kernel then writes value 0x2 to this register, regardless of the previous bitmask value(due to this, the console-unique TWL key-data init is only done at hard-boot).&lt;br /&gt;
&lt;br /&gt;
== 0x10010000 ==&lt;br /&gt;
Initially this is value zero. NATIVE_FIRM writes value 1 here when a FIRM launch begins. The [[Legacy_FIRM_PXI|LGY]] FIRM writes value 3 here when handling PXI command 0x00020080(first TWL PXI command), it also writes value 7 here when handling PXI command 0x00030080(first AGB PXI command). This register can be read to determine what &amp;quot;mode&amp;quot; the system is running under: hard-boot, FIRM launch, or TWL/AGB FIRM.&lt;br /&gt;
&lt;br /&gt;
== REG_UNITINFO ==&lt;br /&gt;
This 8-bit register is value zero for retail, non-zero for dev/debug units.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=9644</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=9644"/>
		<updated>2014-08-24T07:55:46Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: /* 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;
{| 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;
!  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;
| IsSdmcDetected&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
| &lt;br /&gt;
| 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;
| ?&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;
| ?&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;
| ?&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>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Services&amp;diff=9638</id>
		<title>Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Services&amp;diff=9638"/>
		<updated>2014-08-21T21:20:37Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Handles for services are retrieved from the service manager port, &amp;quot;srv:&amp;quot;. Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a [[SVC]](svcConnectToPort).&lt;br /&gt;
&lt;br /&gt;
Processes with PID less than or equal to the number of NATIVE_FIRM built-in modules (fs, sm, pm, pxi, ldr) have access to all services.&lt;br /&gt;
&lt;br /&gt;
==Service Manager Port &amp;quot;srv:&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;
| 0x00010002&lt;br /&gt;
| Initialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| GetProcSemaphore (the handle from this gets signaled when notifications for this process gets triggered)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030100&lt;br /&gt;
| RegisterService (8-byte servicename, u32 strlen, u32 flags?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000400C0&lt;br /&gt;
| UnregisterService (8-byte servicename, u32 strlen)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050100&lt;br /&gt;
| GetServiceHandle (same input as RegisterService)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000600c2&lt;br /&gt;
| RegisterHandle? (8-byte servicename, u32 strlen,Handel h)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| UnregisterHandle? (same input as UnregisterService)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| ishandlepresent (8-byte servicename, u32 strlen,u32 flags) if flag is set it returns the handle?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| IsRegistered This enables the specified notificationID for the current process.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A....&lt;br /&gt;
| This disable the specified notificationID for the current process (u32 ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| ReceiveNotification&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0080&lt;br /&gt;
| PublishToSubscriber&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D....&lt;br /&gt;
| ?can fire notificationIDs and return the number of fired notificationID&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E....&lt;br /&gt;
| returns 1 if the service is registered. 0 if not (8-byte servicename, u32 strlen)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Service Manager Process-Manager Port &amp;quot;srv:pm&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, prior to [[7.0.0-13]]&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x04030082&lt;br /&gt;
| RegisterProcess (u32 procid, u32 wordsz, &amp;lt;nowiki&amp;gt;((wordsz&amp;lt;&amp;lt;16) | 2)&amp;lt;/nowiki&amp;gt;, serviceaccesscontrol*).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040040&lt;br /&gt;
| UnregisterProcess (u32 procid).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Register command registers a process with the service-manager, which includes registering the serviceaccesscontrol for the process which normally originates from the [[NCCH/Extended_Header|exheader]].&lt;br /&gt;
&lt;br /&gt;
Prior to to [[7.0.0-13]], the commands listed for &amp;quot;srv:&amp;quot; were also accessible under this port with the same command-headers. Starting with [[7.0.0-13]], the &amp;quot;srv:pm&amp;quot; port was changed to a service. With this change, commandIDs for these commands were changed. &amp;quot;srv:pm&amp;quot; was originally vulnerable, this was fixed with [[7.0.0-13]], see [[3DS_exploits|here]]. Originally any process could use &amp;quot;srv:pm&amp;quot;, however starting with [[7.0.0-13]] only the built-in NATIVE_FIRM sysmodules have access to it. The only system title which uses &amp;quot;srv:pm&amp;quot; is the [[Process_Manager_Services|Process Manager]].&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x100&lt;br /&gt;
| This indicates that all processes must terminate: power-off, reboot, or [[FIRM]]-launch.&lt;br /&gt;
|-&lt;br /&gt;
| 0x204&lt;br /&gt;
| This indicates that the HOME button was pressed.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Error_codes&amp;diff=9252</id>
		<title>Error codes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Error_codes&amp;diff=9252"/>
		<updated>2014-07-09T07:22:27Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All system error codes follow a shared format.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-10&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 10-17&lt;br /&gt;
| Module&lt;br /&gt;
|-&lt;br /&gt;
| 21-26&lt;br /&gt;
| Summary&lt;br /&gt;
|-&lt;br /&gt;
| 27-31&lt;br /&gt;
| Level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Summary values:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Num&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Success&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Nothing happened&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Would block&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Out of resource&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Not found&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Invalid state&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Not supported&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Invalid argument&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Wrong argument&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Canceled&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Status changed&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Internal&lt;br /&gt;
|-&lt;br /&gt;
| 63&lt;br /&gt;
| Invalid result value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Module values:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Num&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Common&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Kernel&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Util&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| File server&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Loader server&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| TCB&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| OS&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| DBG&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| DMNT&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| PDN&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| GX&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| I2C&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| GPIO&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| DD&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| CODEC&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| SPI&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| PXI&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| FS&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| DI&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| HID&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| CAM&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| PI&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| PM&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| PM_LOW&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| FSI&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| SRV&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| NDM&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| NWM&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| SOC&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| LDR&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| ACC&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| RomFS&lt;br /&gt;
|-&lt;br /&gt;
| 32&lt;br /&gt;
| AM&lt;br /&gt;
|-&lt;br /&gt;
| 33&lt;br /&gt;
| HIO&lt;br /&gt;
|-&lt;br /&gt;
| 34&lt;br /&gt;
| Updater&lt;br /&gt;
|-&lt;br /&gt;
| 35&lt;br /&gt;
| MIC&lt;br /&gt;
|-&lt;br /&gt;
| 36&lt;br /&gt;
| FND&lt;br /&gt;
|-&lt;br /&gt;
| 37&lt;br /&gt;
| MP&lt;br /&gt;
|-&lt;br /&gt;
| 38&lt;br /&gt;
| MPWL&lt;br /&gt;
|-&lt;br /&gt;
| 39&lt;br /&gt;
| AC&lt;br /&gt;
|-&lt;br /&gt;
| 40&lt;br /&gt;
| HTTP&lt;br /&gt;
|-&lt;br /&gt;
| 41&lt;br /&gt;
| DSP&lt;br /&gt;
|-&lt;br /&gt;
| 42&lt;br /&gt;
| SND&lt;br /&gt;
|-&lt;br /&gt;
| 43&lt;br /&gt;
| DLP&lt;br /&gt;
|-&lt;br /&gt;
| 44&lt;br /&gt;
| HIO_LOW&lt;br /&gt;
|-&lt;br /&gt;
| 45&lt;br /&gt;
| CSND&lt;br /&gt;
|-&lt;br /&gt;
| 46&lt;br /&gt;
| SSL&lt;br /&gt;
|-&lt;br /&gt;
| 47&lt;br /&gt;
| AM_LOW&lt;br /&gt;
|-&lt;br /&gt;
| 48&lt;br /&gt;
| NEX&lt;br /&gt;
|-&lt;br /&gt;
| 49&lt;br /&gt;
| Friends&lt;br /&gt;
|-&lt;br /&gt;
| 50&lt;br /&gt;
| RDT&lt;br /&gt;
|-&lt;br /&gt;
| 51&lt;br /&gt;
| Applet&lt;br /&gt;
|-&lt;br /&gt;
| 52&lt;br /&gt;
| NIM&lt;br /&gt;
|-&lt;br /&gt;
| 53&lt;br /&gt;
| PTM&lt;br /&gt;
|-&lt;br /&gt;
| 54&lt;br /&gt;
| MIDI&lt;br /&gt;
|-&lt;br /&gt;
| 55&lt;br /&gt;
| MC&lt;br /&gt;
|-&lt;br /&gt;
| 56&lt;br /&gt;
| SWC&lt;br /&gt;
|-&lt;br /&gt;
| 57&lt;br /&gt;
| FatFS&lt;br /&gt;
|-&lt;br /&gt;
| 58&lt;br /&gt;
| NGC&lt;br /&gt;
|-&lt;br /&gt;
| 59&lt;br /&gt;
| CARD&lt;br /&gt;
|-&lt;br /&gt;
| 60&lt;br /&gt;
| CARDNOR&lt;br /&gt;
|-&lt;br /&gt;
| 61&lt;br /&gt;
| SDMC&lt;br /&gt;
|-&lt;br /&gt;
| 62&lt;br /&gt;
| BOSS&lt;br /&gt;
|-&lt;br /&gt;
| 63&lt;br /&gt;
| DBM&lt;br /&gt;
|-&lt;br /&gt;
| 64&lt;br /&gt;
| Config&lt;br /&gt;
|-&lt;br /&gt;
| 65&lt;br /&gt;
| PS&lt;br /&gt;
|-&lt;br /&gt;
| 66&lt;br /&gt;
| CEC&lt;br /&gt;
|-&lt;br /&gt;
| 67&lt;br /&gt;
| IR&lt;br /&gt;
|-&lt;br /&gt;
| 68&lt;br /&gt;
| UDS&lt;br /&gt;
|-&lt;br /&gt;
| 69&lt;br /&gt;
| PL&lt;br /&gt;
|-&lt;br /&gt;
| 70&lt;br /&gt;
| CUP&lt;br /&gt;
|-&lt;br /&gt;
| 71&lt;br /&gt;
| Gyroscope&lt;br /&gt;
|-&lt;br /&gt;
| 72&lt;br /&gt;
| MCU&lt;br /&gt;
|-&lt;br /&gt;
| 73&lt;br /&gt;
| NS&lt;br /&gt;
|-&lt;br /&gt;
| 74&lt;br /&gt;
| News&lt;br /&gt;
|-&lt;br /&gt;
| 75&lt;br /&gt;
| RO&lt;br /&gt;
|-&lt;br /&gt;
| 76&lt;br /&gt;
| GD&lt;br /&gt;
|-&lt;br /&gt;
| 77&lt;br /&gt;
| Card SPI&lt;br /&gt;
|-&lt;br /&gt;
| 78&lt;br /&gt;
| EC&lt;br /&gt;
|-&lt;br /&gt;
| 79&lt;br /&gt;
| RO&lt;br /&gt;
|-&lt;br /&gt;
| 80&lt;br /&gt;
| Web Browser&lt;br /&gt;
|-&lt;br /&gt;
| 81&lt;br /&gt;
| Test&lt;br /&gt;
|-&lt;br /&gt;
| 82&lt;br /&gt;
| ENC&lt;br /&gt;
|-&lt;br /&gt;
| 83&lt;br /&gt;
| PIA&lt;br /&gt;
|-&lt;br /&gt;
| 254&lt;br /&gt;
| Application&lt;br /&gt;
|-&lt;br /&gt;
| 255&lt;br /&gt;
| Invalid result value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Description values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Num&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Success&lt;br /&gt;
|-&lt;br /&gt;
| 1000&lt;br /&gt;
| Invalid section&lt;br /&gt;
|-&lt;br /&gt;
| 1001&lt;br /&gt;
| Too large&lt;br /&gt;
|-&lt;br /&gt;
| 1002&lt;br /&gt;
| Not authorized&lt;br /&gt;
|-&lt;br /&gt;
| 1003&lt;br /&gt;
| Already done&lt;br /&gt;
|-&lt;br /&gt;
| 1004&lt;br /&gt;
| Invalid size&lt;br /&gt;
|-&lt;br /&gt;
| 1005&lt;br /&gt;
| Invalid enum value&lt;br /&gt;
|-&lt;br /&gt;
| 1006&lt;br /&gt;
| Invalid combination&lt;br /&gt;
|-&lt;br /&gt;
| 1007&lt;br /&gt;
| No data&lt;br /&gt;
|-&lt;br /&gt;
| 1008&lt;br /&gt;
| Busy&lt;br /&gt;
|-&lt;br /&gt;
| 1009&lt;br /&gt;
| Misaligned address&lt;br /&gt;
|-&lt;br /&gt;
| 1010&lt;br /&gt;
| Misaligned size&lt;br /&gt;
|-&lt;br /&gt;
| 1011&lt;br /&gt;
| Out of memory&lt;br /&gt;
|-&lt;br /&gt;
| 1012&lt;br /&gt;
| Not implemented&lt;br /&gt;
|-&lt;br /&gt;
| 1013&lt;br /&gt;
| Invalid address&lt;br /&gt;
|-&lt;br /&gt;
| 1014&lt;br /&gt;
| Invalid pointer&lt;br /&gt;
|-&lt;br /&gt;
| 1015&lt;br /&gt;
| Invalid handle&lt;br /&gt;
|-&lt;br /&gt;
| 1016&lt;br /&gt;
| Not initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1017&lt;br /&gt;
| Already initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1018&lt;br /&gt;
| Not found&lt;br /&gt;
|-&lt;br /&gt;
| 1019&lt;br /&gt;
| Cancel requested&lt;br /&gt;
|-&lt;br /&gt;
| 1020&lt;br /&gt;
| Already exists&lt;br /&gt;
|-&lt;br /&gt;
| 1021&lt;br /&gt;
| Out of range&lt;br /&gt;
|-&lt;br /&gt;
| 1022&lt;br /&gt;
| Timeout&lt;br /&gt;
|-&lt;br /&gt;
| 1023&lt;br /&gt;
| Invalid result value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Level values:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Num&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Success&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Info&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| Temporary&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| Permanent&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| Usage&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| Reinitialize&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| Reset&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| Fatal&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=DSP_Services&amp;diff=9213</id>
		<title>DSP Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=DSP_Services&amp;diff=9213"/>
		<updated>2014-06-30T07:50:07Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= DSP service &amp;quot;dsp::DSP&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| RecvData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| RecvDataIsReady&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030080&lt;br /&gt;
| SendData&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| SendDataIsEmpty&lt;br /&gt;
|-&lt;br /&gt;
| 0x0005...&lt;br /&gt;
| Initialize?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006...&lt;br /&gt;
| Shutdown?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| [[DSP:WriteReg0x10|WriteReg0x10]] SetSemaphore&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| GetSemaphore&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| ClearSemaphore&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A....&lt;br /&gt;
| WriteReg0x18&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| CheckSemaphoreRequest&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0040&lt;br /&gt;
| [[DSP:ConvertProcessAddressFromDspDram|ConvertProcessAddressFromDspDram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0082&lt;br /&gt;
| [[DSP:WriteProcessPipe|WriteProcessPipe]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0&lt;br /&gt;
| [[DSP:ReadPipeIfPossible|ReadPipeIfPossible]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2&lt;br /&gt;
| [[DSP:LoadComponent|LoadComponent]]. This requires RSA-signed DSP firmware specified via the input buffer for this command, the firmware data is eventually written to DSPmem+0(0x1FF00000).&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| UnloadComponent&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130082&lt;br /&gt;
| FlushDataCache (The buffer must be located in the 0x14000000 region)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082&lt;br /&gt;
| InvalidateDCache (The buffer must be located in either the 0x14000000 region, or the DSP memory region)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150082&lt;br /&gt;
| [[DSP:RegisterInterruptEvents|RegisterInterruptEvents(param0, param1, 0, eventhandle)]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[DSP:GetSemaphoreEventHandle|GetSemaphoreEventHandle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170040&lt;br /&gt;
| [[DSP:SetSemaphoreMask|SetSemaphoreMask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180040&lt;br /&gt;
| GetPhysicalAddress (0x14000000+ -&amp;gt; 0x20000000+, 0x1FF00000+ -&amp;gt; 0x1FF00000+, 0x08000000-0x0E000000 -&amp;gt; 0x00000000+, 0 otherwise)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190040&lt;br /&gt;
| GetVirtualAddress (0x20000000+ -&amp;gt; 0x14000000+, 0x1FF00000+ -&amp;gt; 0x1FF00000+, 0 otherwise)&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0042&lt;br /&gt;
| SetIirFilterI2S1. Wrapper for cdc:DSP cmd 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0042&lt;br /&gt;
| SetIirFilterI2S1. Wrapper for cdc:DSP cmd 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0082&lt;br /&gt;
| SetIirFilterEQ. Wrapper for cdc:DSP cmd 3&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D....&lt;br /&gt;
| Wrapper for cdc:DSP cmd 4&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E....&lt;br /&gt;
| Wrapper for cdc:DSP cmd 5&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0000&lt;br /&gt;
| GetHeadphoneStatus. Wrapper for cdc:DSP cmd 6&lt;br /&gt;
|-&lt;br /&gt;
| 0x0020....&lt;br /&gt;
| Wrapper for cdc:DSP cmd 8&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| GetIsDspOccupied returns a byte (can be 1 or 0) can be set to 1 in LoadComponent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is the main service for playing audio. The [[CSND_Services|CSND]] service can be used for playing audio as well, however most processes use this DSP service for playing audio. The DSP and CSND hardware can play audio simultaneously.&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=9185</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=9185"/>
		<updated>2014-06-15T16:04:05Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the format of the [[Config_Services|Cfg]] [[System_SaveData|NAND]] savegame. These blocks can be accessed with the Cfg service commands.&lt;br /&gt;
&lt;br /&gt;
==Structure of save-file &amp;quot;/config&amp;quot;==&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;
| 0x2&lt;br /&gt;
| Total entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4558&lt;br /&gt;
| Block entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x455C&lt;br /&gt;
| &lt;br /&gt;
| Data for the entries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize for this /config file is 0x8000-bytes.&lt;br /&gt;
&lt;br /&gt;
==Configuration block entry ==&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;
| 0x4&lt;br /&gt;
| BlkID&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for this block when size is &amp;gt;4, otherwise this word is the data for this block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x2&lt;br /&gt;
| Size&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 0x2&lt;br /&gt;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| ?&lt;br /&gt;
| Stereo camera settings?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| ?&lt;br /&gt;
| Sound output mode?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0x2?&lt;br /&gt;
| Wifi configuration slot0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0x2?&lt;br /&gt;
| Wifi configuration slot1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0x2?&lt;br /&gt;
| Wifi configuration slot2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x2?&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:Initialize]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate random word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This console-unique u64 used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]] is generated with the LocalFriendCodeSeed and with random data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xA&lt;br /&gt;
| Language&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x8&lt;br /&gt;
| CountryInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0001&lt;br /&gt;
| 0x800&lt;br /&gt;
| 0x2?&lt;br /&gt;
| Country name in UTF-16, every 0x80-bytes is an entry for each language(not all entries are set).&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0002&lt;br /&gt;
| 0x800&lt;br /&gt;
| 0x2?&lt;br /&gt;
| State name in UTF-16, every 0x80-bytes is an entry for each language.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| 0xC0&lt;br /&gt;
| ?&lt;br /&gt;
| Restricted photo exchange data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| ?&lt;br /&gt;
| Same as above?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
| Agreed to EULA?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x8?&lt;br /&gt;
| Unknown, used by [[NS]] on dev-units for [[SVC|svcKernelSetState]], where Type is 6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
| The low u16 indicates whether the system setup is required, such as when the system is booted for the first time or after doing a [[System Settings|System Format]]: 0 = setup required, non-zero = no setup required.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xA?&lt;br /&gt;
| TitleID of the menu to launch, used by [[NS]] on dev units. (This block can be edited on dev units with [[3DS Development Unit Software#Config|Config]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
| If response is 0x100 then debug mode is enabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The dev unit TID block only exists on dev units.&lt;br /&gt;
&lt;br /&gt;
===Languages===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| ja&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| en&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| fr&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| de&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| it&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| es&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| zh&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| ko&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| nl&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| pt&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| ru&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CountryInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Country code, same as DSi/Wii country codes. Value 0xff is invalid.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NDM_Services&amp;diff=9160</id>
		<title>NDM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NDM_Services&amp;diff=9160"/>
		<updated>2014-05-29T03:21:39Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NDM service &amp;quot;ndm: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;
| 0x00060040&lt;br /&gt;
| SuspendDaemons&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080040&lt;br /&gt;
| DisableWifiUsage?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| EnableWifiUsage&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140040&lt;br /&gt;
| OverrideDefaultDaemons&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=9063</id>
		<title>SVC</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=SVC&amp;diff=9063"/>
		<updated>2014-05-10T05:08:53Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= System calls =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Id&lt;br /&gt;
!  NATIVE_FIRM ARM11 kernel notes&lt;br /&gt;
!  Enabled for the TWL_FIRM ARM11 kernel&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ControlMemory(u32* outaddr, u32 addr0, u32 addr1, u32 size, u32 operation, u32 permissions) (outaddr is usually the same as the input addr0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result  QueryMemory(MemoryInfo* info, PageInfo* out, u32 Addr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| void ExitProcess(void)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result  GetProcessAffinityMask(u8* affinitymask, Handle process, s32 processorcount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SetProcessAffinityMask(Handle process, u8* affinitymask, s32 processorcount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetProcessIdealProcessor(s32 *idealprocessor, Handle process)&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SetProcessIdealProcessor(Handle process, s32 idealprocessor)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result [[#CreateThread|CreateThread]](Handle* thread, func entrypoint, u32 arg, u32 stacktop, s32 threadpriority, s32 processorid)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| void ExitThread(void)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| void SleepThread(s64 nanoseconds)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result GetThreadPriority(s32* priority, Handle thread)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result SetThreadPriority(Handle thread, s32 priority)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetThreadAffinityMask(u8* affinitymask, Handle thread, s32 processorcount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SetThreadAffinityMask(Handle thread, u8* affinitymask, s32 processorcount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetThreadIdealProcessor(s32* processorid, Handle thread)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SetThreadIdealProcessor(Handle thread, s32 processorid)&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| s32 GetCurrentProcessorNumber(void)&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result Run(Handle process, StartupInfo* info) (This starts the main() thread. Buf+0 is main-thread priority, Buf+4 is main-thread stack-size.)&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result CreateMutex(Handle* mutex, bool initialLocked)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result ReleaseMutex(Handle mutex)&lt;br /&gt;
|-&lt;br /&gt;
| 0x15 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result CreateSemaphore(Handle* semaphore, s32 initialCount, s32 maxCount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result ReleaseSemaphore(s32* count, Handle semaphore, s32 releaseCount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result CreateEvent(Handle* event, ResetType resettype)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result SignalEvent(Handle event)&lt;br /&gt;
|-&lt;br /&gt;
| 0x19 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result ClearEvent(Handle event)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result CreateTimer(Handle* timer, ResetType resettype)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result SetTimer(Handle timer, s64 initial, s64 interval)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result CancelTimer(Handle timer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result ClearTimer(Handle timer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result CreateMemoryBlock(Handle* memblock, u32 addr, u32 size, u32 mypermission, u32 otherpermission)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result MapMemoryBlock(Handle memblock, u32 addr, u32 mypermissions, u32 otherpermission)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result UnmapMemoryBlock(Handle memblock, u32 addr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result CreateAddressArbiter(Handle* arbiter)&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result ArbitrateAddress(Handle arbiter, u32 addr, ArbitrationType type, s32 value, s64 nanoseconds)&lt;br /&gt;
|-&lt;br /&gt;
| 0x23 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result CloseHandle(Handle handle)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result WaitSynchronization1(Handle handle, s64 nanoseconds)&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result WaitSynchronizationN(s32* out, Handle* handles, s32 handlecount, bool waitAll, s64 nanoseconds)&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SignalAndWait(s32* out, Handle signal, Handle* handles, s32 handleCount, bool waitAll, s64 nanoseconds)&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result DuplicateHandle(Handle* out, Handle original)&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| s64 GetSystemTick(void) (This returns the total CPU ticks elapsed since the CPU was powered-on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetHandleInfo(s64* out, Handle handle, HandleInfoType type)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result GetSystemInfo(s64* out, SystemInfoType type, s32 param)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result GetProcessInfo(s64* out, Handle process, ProcessInfoType type)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result GetThreadInfo(s64* out, Handle thread, ThreadInfoType type)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ConnectToPort(Handle* out, const char* portName)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E &lt;br /&gt;
| Stubbed&lt;br /&gt;
| No&lt;br /&gt;
| Result SendSyncRequest1(Handle session)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F &lt;br /&gt;
| Stubbed&lt;br /&gt;
| No&lt;br /&gt;
| Result SendSyncRequest2(Handle session)&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 &lt;br /&gt;
| Stubbed&lt;br /&gt;
| No&lt;br /&gt;
| Result SendSyncRequest3(Handle session)&lt;br /&gt;
|-&lt;br /&gt;
| 0x31 &lt;br /&gt;
| Stubbed&lt;br /&gt;
| No&lt;br /&gt;
| Result SendSyncRequest4(Handle session)&lt;br /&gt;
|-&lt;br /&gt;
| 0x32 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SendSyncRequest(Handle session)&lt;br /&gt;
|-&lt;br /&gt;
| 0x33 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result OpenProcess(Handle* process, u32 processId)&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result OpenThread(Handle* thread, Handle process, u32 threadId)&lt;br /&gt;
|-&lt;br /&gt;
| 0x35 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result GetProcessId(u32* processId, Handle process)&lt;br /&gt;
|-&lt;br /&gt;
| 0x36 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetProcessIdOfThread(u32* processId, Handle thread)&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result GetThreadId(u32* threadId, Handle thread)&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetResourceLimit(Handle* resourceLimit, Handle process)&lt;br /&gt;
|-&lt;br /&gt;
| 0x39 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetResourceLimitLimitValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetResourceLimitCurrentValues(s64* values, Handle resourceLimit, LimitableResource* names, s32 nameCount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3B &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetThreadContext(ThreadContext* context, Handle thread) (Stubbed)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Break(BreakReason)&lt;br /&gt;
|- style=&amp;quot;border-top: double&amp;quot;&lt;br /&gt;
| 0x3D &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| OutputDebugString(void const, int) (Does nothing on non-debug units)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| ControlPerformanceCounter(unsigned long long, int, unsigned int, unsigned long long)&lt;br /&gt;
|-&lt;br /&gt;
| 0x47 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result CreatePort(Handle* portServer, Handle* portClient,  const char* name, s32 maxSessions)&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result CreateSessionToPort(Handle* session, Handle port)&lt;br /&gt;
|-&lt;br /&gt;
| 0x49 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result CreateSession(Handle* sessionServer, Handle* sessionClient)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result AcceptSession(Handle* session, Handle port)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ReplyAndReceive1(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ReplyAndReceive2(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ReplyAndReceive3(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ReplyAndReceive4(s32* index, Handle* handles, s32 handleCount, Handle replyTarget) (Stubbed)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4F &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ReplyAndReceive(s32* index, Handle* handles, s32 handleCount, Handle replyTarget)&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result BindInterrupt(Interrupt name, Handle syncObject, s32 priority, bool isManualClear)&lt;br /&gt;
|-&lt;br /&gt;
| 0x51 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result UnbindInterrupt(Interrupt name, Handle syncObject)&lt;br /&gt;
|-&lt;br /&gt;
| 0x52 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result InvalidateProcessDataCache(Handle process, void* addr, u32 size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x53 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result StoreProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result FlushProcessDataCache(Handle process, void const* addr, u32 size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x55 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result StartInterProcessDma(Handle* dma, Handle dstProcess, void* dst, Handle srcProcess, const void* src, u32 size, const DmaConfig&amp;amp; config )&lt;br /&gt;
|-&lt;br /&gt;
| 0x56 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result StopDma(Handle dma)&lt;br /&gt;
|-&lt;br /&gt;
| 0x57 &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Result GetDmaState(DmaState* state, Handle dma)&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| RestartDma(nn::Handle, void *, void  const*, unsigned int, signed char)&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result DebugActiveProcess(Handle* debug, u32 processID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x61 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result BreakDebugProcess(Handle debug)&lt;br /&gt;
|-&lt;br /&gt;
| 0x62 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result TerminateDebugProcess(Handle debug)&lt;br /&gt;
|-&lt;br /&gt;
| 0x63 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetProcessDebugEvent(DebugEventInfo* info, Handle debug)&lt;br /&gt;
|-&lt;br /&gt;
| 0x64 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ContinueDebugEvent(Handle debug, u32 flags)&lt;br /&gt;
|-&lt;br /&gt;
| 0x65 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetProcessList(s32* processCount, u32* processIds, s32 processIdMaxCount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x66 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetThreadList(s32* threadCount, u32* threadIds, s32 threadIdMaxCount, Handle domain)&lt;br /&gt;
|-&lt;br /&gt;
| 0x67 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result GetDebugThreadContext(ThreadContext* context, Handle debug, u32 threadId, u32 controlFlags)&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SetDebugThreadContext(Handle debug, u32 threadId, ThreadContext* context, u32 controlFlags)&lt;br /&gt;
|-&lt;br /&gt;
| 0x69 &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result QueryDebugProcessMemory(MemoryInfo* blockInfo, PageInfo* pageInfo, Handle process, u32 addr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6A &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result ReadProcessMemory(void* buffer, Handle debug, u32 addr, u32 size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6B &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result WriteProcessMemory(Handle debug, void const* buffer, u32 addr, u32 size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Result SetHardwareBreakPoint(s32 registerId, u32 control, u32 value)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6D&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| GetDebugThreadParam(long long *, int *, nn::Handle, unsigned int, nn::dmnt::DebugThreadParam) (Disabled on regular kernel)&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| ControlProcessMemory(Handle KProcess, unsigned int Addr0, unsigned int Addr1, unsigned int Size, unsigned int Type, unsigned int Permissions)&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| MapProcessMemory(Handle KProcess, unsigned int StartAddr, unsigned int EndAddr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x72&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| UnmapProcessMemory(Handle KProcess, unsigned int StartAddr, unsigned int EndAddr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x73&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| CreateProcess(Handle* HandleInfo_out, struct CreateProcessInfo, u32 code_ptr, u32 ro_ptr, u32 data_ptr)&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| Stubbed&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x75&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| SetupProcess(Handle* KProcess_out, Handle HandleInfo_in, u32 arm11kernelcaps_ptr, u32 arm11kernelcaps_num)&lt;br /&gt;
|-&lt;br /&gt;
| 0x76&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| TerminateProcess(Handle)&lt;br /&gt;
|-&lt;br /&gt;
| 0x77&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| (Handle KProcess, Handle KResourceLimit)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| CreateResourceLimit(Handle *KResourceLimit)&lt;br /&gt;
|-&lt;br /&gt;
| 0x79&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x7A&lt;br /&gt;
| Stubbed beginning with [[2.0.0-2]]&lt;br /&gt;
| Yes&lt;br /&gt;
| ? (unsigned int Addr, unsigned int Size)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| KernelSetState(unsigned int Type, unsigned int Param0, unsigned int Param1, unsigned int Param2) (The Type determines the usage of each param)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| QueryProcessMemory(MemInfo *Info, unsigned int *Out, Handle KProcess, unsigned int Addr)&lt;br /&gt;
|-&lt;br /&gt;
| 0xFF&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Debug related (The Syscall access control mask doesn&#039;t apply for this SVC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CreateThread ==&lt;br /&gt;
 R0=s32 threadpriority&lt;br /&gt;
 R1=func entrypoint&lt;br /&gt;
 R2=u32 arg&lt;br /&gt;
 R3=u32 stacktop&lt;br /&gt;
 R4=s32 processorid&lt;br /&gt;
&lt;br /&gt;
 Result result=R0&lt;br /&gt;
 Handle* thread=R1&lt;br /&gt;
&lt;br /&gt;
This processorid is a bitmask for which processors the thread can be run on. Bit value zero enables thread execution for this CPUID, bit value one disables thread execution for this CPUID. Bit0-bit1 are for CPUID0-CPUID1.&lt;br /&gt;
&lt;br /&gt;
The stacktop must be aligned to 0x8-bytes, otherwise when not aligned to 0x8-bytes the ARM11 kernel clears the low 3-bits of the stacktop address.&lt;br /&gt;
&lt;br /&gt;
= Types and structures =&lt;br /&gt;
&lt;br /&gt;
== enum MemoryState ==&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;
| FREE&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| RESERVED&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| IO&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| STATIC&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| CODE&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| PRIVATE&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| SHARED&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| CONTINUOUS&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| ALIASED&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| ALIAS&lt;br /&gt;
| 9&lt;br /&gt;
|-&lt;br /&gt;
| ALIAS CODE&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| LOCKED&lt;br /&gt;
| 11&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== enum PageFlags ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Page flags&lt;br /&gt;
!  Bit&lt;br /&gt;
|-&lt;br /&gt;
| LOCKED&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| CHANGED&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== enum MemoryOperation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Memory operation&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| FREE&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| RESERVE&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| COMMIT&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| MAP&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| UNMAP&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| PROTECT&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| REGION APP&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| REGION SYSTEM&lt;br /&gt;
| 0x200&lt;br /&gt;
|-&lt;br /&gt;
| REGION BASE&lt;br /&gt;
| 0x300&lt;br /&gt;
|-&lt;br /&gt;
| LINEAR&lt;br /&gt;
| 0x10000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The LINEAR memory-operation indicates that the mapped physical address is always MappedVAddr+0x0C000000, thus this memory can be used for hardware devices&#039; DMA(such as the [[GPU]]). Addr0+size for this must be within the 0x14000000-0x1C000000 range when Addr0 is non-zero(Addr1 must be zero), Addr0 isn&#039;t actually used by svcControlMemory for mapping memory since the kernel determines what vaddr to map. LINEAR memory is allocated in FCRAM the same way as any other virtual memory(like the regular process heap, etc).&lt;br /&gt;
&lt;br /&gt;
The input mem-region value for svcControlMemory is only used(when non-zero) when the PID is value 1, for the [[FIRM]] ARM11 &amp;quot;loader&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
== enum MemoryPermission ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Memory permission&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| NONE&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| READ&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| WRITE&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| READWRITE&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| DONTCARE&lt;br /&gt;
| 0x10000000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== enum ResetType ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Reset type&lt;br /&gt;
!  Id&lt;br /&gt;
|-&lt;br /&gt;
| ONESHOT&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| STICKY&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PULSE&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct MemoryInfo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Base address&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Size&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Permission&lt;br /&gt;
|-&lt;br /&gt;
| enum MemoryState&lt;br /&gt;
| State&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct PageInfo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== struct StartupInfo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Type&lt;br /&gt;
!  Field&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| Priority&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Stack size&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| argc&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| argv&lt;br /&gt;
|-&lt;br /&gt;
| s16*&lt;br /&gt;
| envp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Processes =&lt;br /&gt;
Each process can only use SVCs which are enabled in the [[NCCH#CXI|exheader]] for this process. The ARM11 kernel SVC handler checks whether the SVC is enabled in the syscall access control mask stored on the SVC-mode stack, when the SVC isn&#039;t enabled a kernelpanic() is triggered. Each process has a separate SVC-mode stack, this stack and the syscall access mask stored here is initialized when the process is started. Applications normally only have access to SVCs &amp;lt;=0x3D, however not all SVCs &amp;lt;=0x3D are accessible to the application. The majority of the SVCs accessible to applications are unused by the application.&lt;br /&gt;
&lt;br /&gt;
Each process has a separate handle-table, the size of this table is stored in the exheader. The handles in a handle-table can&#039;t be used in the context of other processes, since those handles don&#039;t exist in other handle-tables.&lt;br /&gt;
&lt;br /&gt;
0xFFFF8001 is a handle alias for the current KProcess, and 0xFFFF8000 is a handle alias for the current KThread.&lt;br /&gt;
&lt;br /&gt;
Calling svcBreak on retail will only terminate the process which called this SVC.&lt;br /&gt;
&lt;br /&gt;
= Threads =&lt;br /&gt;
For svcCreateThread the input address used for Entrypoint_Param and StackTop are normally the same, however these can be arbitrary. For the main thread the Entrypoint_Param is value 0.&lt;br /&gt;
&lt;br /&gt;
Using CloseHandle() with a KThread handle will terminate the specified thread.&lt;br /&gt;
&lt;br /&gt;
= Memory Mapping =&lt;br /&gt;
ControlMemory and MapMemoryBlock can be used to map memory pages, these two SVCs only support mapping execute-never R/W pages. The input permissions parameter for these SVCs must be &amp;lt;=3, where value zero is used when un-mapping memory. Bitmask 0xf00 for ControlMemory parameter MemoryType is the memory-type, when this is zero the memory-type is loaded from the kernel flags stored in the exheader ARM11 kernel descriptors, for the process using the SVC. ControlMemory parameter MemoryType with value 0x10003 is used for mapping the GSP [[Memory_layout|heap]]. The low 8-bits are the type: 1 is for un-mapping memory, 3 for mapping memory. Type4 is used to mirror the RW memory at Addr1, to Addr0. Type4 will return an error if Addr1 is located in read-only memory. Addr1 is not used for type1 and type3.&lt;br /&gt;
&lt;br /&gt;
The ARM11 kernel does not allow processes to create shared memory blocks via svcCreateMemoryBlock, when the process memorytype(from the kernel flags stored in the exheader kernel descriptor) is the application memorytype, and when addr=0. It&#039;s unknown how the kernel handles addr=0 when the memorytype is not the application memorytype. When addr is non-zero, it must be located in memory which is already mapped.&lt;br /&gt;
&lt;br /&gt;
ControlProcessMemory maps memory in the specified process, this is the only SVC which allows mapping executable memory. Format of the permissions field for memory mapping SVCs: bit0=R, bit1=W, bit2=X. Type6 sets the Addr0 memory permissions to the input permissions, for already mapped memory. Type is the MemoryOperation enum, without the memory-type/memory-region. ControlProcessMemory only supports type4, type5, and type6. ControlProcessMemory does not support using the current KProcess handle alias.&lt;br /&gt;
&lt;br /&gt;
MapProcessMemory maps RW memory starting at address 0x00100000 in the specified KProcess, at the specified StartAddr in the current process. MapProcessMemory then maps 0x08000000 in the specified process, to StartAddr+0x7f00000 in the current process. UnmapProcessMemory unmaps the memory which was mapped by MapProcessMemory.&lt;br /&gt;
&lt;br /&gt;
= Debugging =&lt;br /&gt;
DebugActiveProcess is used to attach to a process for debugging. This SVC can only be used when the target process&#039; ARM11 descriptors stored in the exheader have the kernel flag for &amp;quot;Enable debug&amp;quot; set. Otherwise when that flag is clear, the kernel flags for the process using this SVC must have the &amp;quot;Force debug&amp;quot; flag set.&lt;br /&gt;
&lt;br /&gt;
= KernelSetState =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Type&lt;br /&gt;
!  Enabled for the NATIVE_FIRM ARM11 kernel&lt;br /&gt;
!  Enabled for the TWL_FIRM ARM11 kernel&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| This initializes the programID for launching [[FIRM]], then triggers launching [[FIRM]]. Param0 and Param2 are unused. Param1 is the programID-low, and the programID-high is 0x00040138.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Unknown, does nothing with the TWL_FIRM ARM11 kernel.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| This used for initializing the 0x1000-byte buffer used by the launched [[FIRM]]. Param2 is unused. When Param0 is value 1, this buffer is copied to the beginning of FCRAM at 0xF0000000, and Param1 is unused. When Param0 is value 0, this kernel buffer is mapped to process address Param1.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Param0-Param3 are unused. This unmaps(?) the following virtual memory by writing value physaddr(where physaddr base is 0x80000000) to the L1 MMU table entries: 0x00300000..0x04300000, 0x08000000..0x0FE00000, and 0x10000000..0xF8000000.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Debug related?&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| This triggers ARM11 kernel [[I2C]] code, Param0-Param3 are unused. This ARM11 kernel I2C code will never return. Device address 0x4a via the second I2C bus is used here. This triggers a hardware system reboot via poking an I2C MCU register: register address 0x20 is written to with value 4.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Alternate unused FIRM launch code-path, with different [[PXI]] FIFO word constants.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Yes, implemented at some point after system-version v4.5.&lt;br /&gt;
| ?&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= GetSystemInfo =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  SystemInfoType value&lt;br /&gt;
!  s32 param&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
| This writes the total used memory size in the following memory regions to out: APPLICATION, SYSTEM, and BASE.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| This writes the total used memory size in the APPLICATION memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 2&lt;br /&gt;
| This writes the total used memory size in the SYSTEM memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 3&lt;br /&gt;
| This writes the total used memory size in the BASE memory region to out.&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| Unused&lt;br /&gt;
| This writes the total number of processes which were directly launched by the kernel, to out. For the NATIVE_FIRM/SAFE_MODE_FIRM ARM11 kernel, this is normally 5, for processes sm, fs, pm, loader, and pxi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= CreateProcess =&lt;br /&gt;
 struct CreateProcessInfo {&lt;br /&gt;
 	// All addresses are given virtual for the process to be created.&lt;br /&gt;
 	// All sizes/offsets are in given in 0x1000-pages.&lt;br /&gt;
 	u8  codeset_name[8];&lt;br /&gt;
 	u32 text_addr;&lt;br /&gt;
 	u32 text_size;&lt;br /&gt;
 	u32 ro_addr;&lt;br /&gt;
 	u32 ro_size;&lt;br /&gt;
 	u32 data_addr;&lt;br /&gt;
 	u32 data_size;&lt;br /&gt;
 	u32 ro_offset;&lt;br /&gt;
 	u32 data_offset;&lt;br /&gt;
 	u32 bss_size+data_size;&lt;br /&gt;
 	u8  program_id[8];&lt;br /&gt;
 	u32 hmm?[2];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Kernel error-codes =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Error-code value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860180A&lt;br /&gt;
| Not enough free memory available for memory allocation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920181A&lt;br /&gt;
| The session was closed due to the other process terminating / calling svcBreak.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E007F7&lt;br /&gt;
| This error indicates that the input handle used with the SVC does not exist in the process handle-table, or that the handle kernel object type does not match the type used by the SVC.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD92007EA&lt;br /&gt;
| This error is returned when a process attempts to use svcCreateMemoryBlock when the process memorytype is the application memorytype, and when addr=0.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF8C007F4&lt;br /&gt;
| Invalid type/param0-param3 input for svcKernelSetState.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Normmatt</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=8964</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=8964"/>
		<updated>2014-04-26T03:27:54Z</updated>

		<summary type="html">&lt;p&gt;Normmatt: &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;
{| 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;
!  Required 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;
| IsSdmcDetected&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
| &lt;br /&gt;
| 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;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08520100&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| Unknown (u32 flags, u64 extdataID)&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08530142&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0854....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0856....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0857....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08580000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0859....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F....&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| InitializeWithSdkVersion&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| SetPriority&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| GetPriority&lt;br /&gt;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x086700C4&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&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;
&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.&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;
&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>Normmatt</name></author>
	</entry>
</feed>