<?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=TimmSkiller</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=TimmSkiller"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/TimmSkiller"/>
	<updated>2026-05-12T23:53:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=23759</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=23759"/>
		<updated>2026-02-18T16:16:43Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Update config block 0x00030002&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;
| Data entries offset&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;
| Access Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Access Flags===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit Mask&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| User Readable (cfg:u)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| System Writable (cfg:s / cfg:i)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| System Readable (cfg:s / cfg:i)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Config blocks will typically either use 0xC for system readable/writable or 0xE for all 3.&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;
!  Access Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Config savegame version?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#RTC|RTC compensation value]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#CDC|Codec]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| Leap Year Counter (read By PTM)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD): displayed timestamp - rtc timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| Difference (in nanoseconds) between UTC server time and RTC time. Updated by [[Friend_Services|the Friends sysmodule]] after every [[Online_Play|NASC]] login. Used by System settings to calculate the real current time according to the online play authentication server, in order to determine the user&#039;s actual age based on the given date of birth (related to COPPA, since this is used to check whether the user is at least 13 years old).&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Touch|Touch calibration]] (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040001&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| Analog Stick Calibration Param?(read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040002&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Gyro|Gyroscope]] (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Accel|Accelerometer]] (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#CStick|CStick calibration data]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Screen_flicker|Screen flicker]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050001&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Backlight controls (u8 ABL_powersave_enable, u8 brightness_level) (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050002&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#BLPWM|Backlight PWM]] (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ABL|Power saving mode (ABL) calibration]] (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ABL|Power saving mode (ABL) calibration]] (for legacy FIRM)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings (HWCAL block 0x470)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ULCD_delay|3D switching delay]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050007&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050008&lt;br /&gt;
| 0x10C&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ABL_extra|Power saving mode (ABL) extra config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: auto-brightness enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ??? (HWCAL block 0x500)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[Hardware_calibration#3D_filters|3D filters]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono=0, stereo=1, surround=2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[Hardware_calibration#Microphone_echo_cancel|Microphone echo cancellation params]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[#User Name Block 0x000A0000|User Name]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0001&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xE&lt;br /&gt;
| Birthday (u8 month, u8 day)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Language&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| CountryInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0001&lt;br /&gt;
| 0x800&lt;br /&gt;
| 0xE&lt;br /&gt;
| Country name in UTF-16, every 0x80-bytes is an entry for each language, in the order of the Language table below (not all entries are set)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0002&lt;br /&gt;
| 0x800&lt;br /&gt;
| 0xE&lt;br /&gt;
| State name in UTF-16, every 0x80-bytes is an entry for each language&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0003&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| Coordinates. A pair of s16 represents latitude and longitude, respectively. One need to multiply both value by 180/32768 to get coordinates in degrees&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[#Parental Control Settings Block 0x000C0000|Parental Controls - Main data]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| COPPACS restriction data&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[#Parental Control Settings Block 0x000C0002|Parental Controls - Registered e-Mail address and custom secret question]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| u16 at offset 0x0: [[SMDH#EULA_Version|EULA Version]] which was agreed to. u16 @ 0x02: latest version&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? (related to SpotPass options in Internet Settings?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| Debug configuration, read by [[NS]] on dev-units: on startup, NS does &amp;lt;code&amp;gt;svcKernelSetState(6, 1, (u64)debug_flags &amp;amp; 1); &lt;br /&gt;
svcKernelSetState(6, 2, (u64)debug_flags &amp;amp; 2);&amp;lt;/code&amp;gt; (see [[SVC#KernelSetState|here]]) where &amp;lt;code&amp;gt;debug_flags&amp;lt;/code&amp;gt; is the u32 located at offset 0xC in this struct. Then it compares the u32 from +8 in this config-block with the [[Configuration_Memory#APPMEMTYPE|APPMEMTYPE]]. When those don&#039;t match NS starts a FIRM-launch (with the same FIRM titleID as the currently running one) to boot into a FIRM with the APPMEMTYPE value from this config-block. The byte at offset 0x0 is related to the memtype as well.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0003&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| Home Menu button disable&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0004&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| The first u8 is the System-Model [[Cfg:GetSystemModel|value]], the last 3-bytes are unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0005&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| The first u8 indicates whether network updates are enabled (however, NIM only checks this flag with developer [[Configuration_Memory#ENVINFO|ENVINFO]]).&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0006&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0xC&lt;br /&gt;
| In NIM, taken as a (hopefully null terminated) string used for the &amp;quot;X-Device-Token&amp;quot; http header field for NPNS url.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| TWL EULA info ({bool agreed; u8 agreedVersion})&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100001&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0xC&lt;br /&gt;
| Stores Parental Restrictions PIN/Secret Answer and other info for TWL mode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| TWL country code&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| TWL movable unique ID, used for DSiWare exports&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&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;
| 0xC&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;
| 0x00120000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| Volume Slider Bounds (Read by HID and PTM)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| If response is 0x100 then debug mode is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| Clock Sequence (u16) used for generating UUIDs in [[ACT_Services|ACT]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[Friend_Services#Server_Types|NFS (Nintendo Friend Server) Environment]] in the format &amp;lt;code&amp;gt;%c%d&amp;lt;/code&amp;gt;. Set by the [[ACT_Services|ACT]] sysmodule. Used in the [[NIM_Services#NIM|NIM]] sysmodule for making the NPNS URL.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| Unknown, first byte is used by config service-cmd [[Config_Services|0x00070040]]. (Unknown whether the last 3-bytes are used)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| Miiverse (OLV) access key&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| QTM Infrared LED related, can be 0 or 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#QTM|QTM calibration data]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| Unknown. NFC-module checks for value1/non-value1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The developer unit TID block only exists on developer units.&lt;br /&gt;
&lt;br /&gt;
===Stereo Display Settings===&lt;br /&gt;
All values are hard-coded in cfg module.&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;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| 62.0f&lt;br /&gt;
|assumed pupillary distance in mm?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| 289.0f&lt;br /&gt;
|assumed distance in mm between player&#039;s eyes and upper screen?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| 76.80f&lt;br /&gt;
|width in mm of (old) 3DS upper screen (doesn&#039;t vary for different models?)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| 46.08f&lt;br /&gt;
|height in mm of (old) 3DS upper screen (doesn&#039;t vary for different models?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| 10.0f&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| 5.0f&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| 55.58f&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| 21.57f&lt;br /&gt;
|&lt;br /&gt;
|}&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;
| JP&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;
| 11&lt;br /&gt;
| TW&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;
| State/Province code.&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;
===User Name Block 0x000A0000===&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;
| 0x00-0x15&lt;br /&gt;
| User name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x16-0x17&lt;br /&gt;
| u16 NGWord flag to denote that the user name is inappropriate&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| u32 NGWord version the username was last checked with. If this value is less than the u32 stored in the NGWord CFA &amp;quot;romfs:/version.dat&amp;quot;, the system then checks the username string with the bad-word list CFA again, then updates this field with the value from the CFA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
While the user name is NULL-terminated, the terminator is not applied when the user name is 10 characters long, which leads to online access breaking (002-0109) and buffer overflows when the user name is retrieved, even in DS games.&lt;br /&gt;
&lt;br /&gt;
===WiFi Slot Structure===&lt;br /&gt;
&lt;br /&gt;
====Network structure====&lt;br /&gt;
This is used twice in the actual WiFi slot 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;
| 0x1&lt;br /&gt;
| Whether the network was set or not?&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to use this network strucutre to connect?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether this structure is the first (0) or the second (1) in the larger WiFi slot structure?&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x20&lt;br /&gt;
| SSID of the network, without a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x1&lt;br /&gt;
| Length of the SSID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Nintendo_Zone#Beacon_payload_format|AP crypto key type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x26&lt;br /&gt;
| 0x2&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x40&lt;br /&gt;
| Plaintext of the passphrase of the network, without a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x20&lt;br /&gt;
| PBKDF2 of the passphrase and SSID (http://jorisvr.nl/wpapsk.html).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Actual 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;
| 0x2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| [https://github.com/lammertb/libcrc/blob/v2.0/src/crc16.c#L43-L76 CRC-16 checksum] of the next 0x410 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x88&lt;br /&gt;
| First network structure. Only set if the network was set &amp;quot;normally&amp;quot;, or was the last to be set using WPS during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x20&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x88&lt;br /&gt;
| Second network structure. Only set if the network was set using WPS, otherwise 0-filled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0x20C&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x340&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to automatically get the IP address (use DHCP) or not, defaults to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x341&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to automatically get the DNS or not, defaults to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x342&lt;br /&gt;
| 0x2&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x344&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address, to use if 0x340 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x348&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address of the gateway, to use if 0x340 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Subnetwork mask, to use if 0x340 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x350&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address of the primary DNS , to use if 0x341 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x354&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address of the secondary DNS, to use if 0x341 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x358&lt;br /&gt;
| 0x4&lt;br /&gt;
| Always 0x01050000 ? Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x35C&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address to use. Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x360&lt;br /&gt;
| 0x6&lt;br /&gt;
| MAC address of the AP. Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x366&lt;br /&gt;
| 0x1&lt;br /&gt;
| Channel. Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x367&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding ? Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x368&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to use a proxy or not, defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x369&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to use a basic authentication for the proxy, defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x36A&lt;br /&gt;
| 0x2&lt;br /&gt;
| Port to use for the proxy, defaults to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x36C&lt;br /&gt;
| 0x30&lt;br /&gt;
| URL/address of the proxy, including a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x39C&lt;br /&gt;
| 0x34&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D0&lt;br /&gt;
| 0x20&lt;br /&gt;
| Username to use for basic authentication, including a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3F0&lt;br /&gt;
| 0x20&lt;br /&gt;
| Password to use for basic authentication, including a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x410&lt;br /&gt;
| 0x2&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x412&lt;br /&gt;
| 0x2&lt;br /&gt;
| MTU value, defaults to 1400 and ranges between 576 and 1500, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0x414&lt;br /&gt;
| 0x7EC&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===LCD display config===&lt;br /&gt;
There seems to be some sort of LCD display configuration stored in this cfg. When using the cfg-save from an Old3DS on a New3DS without formatting the cfg first, the bottom-screen display is somewhat off(which is fixed by formatting the cfg-save).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parental Control Settings Block 0x00100001===&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;
!  Size in bytes&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0xD&lt;br /&gt;
| Unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| 0x4&lt;br /&gt;
| PIN&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x40&lt;br /&gt;
| Secret Answer (UTF-16)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parental Control Settings Block 0x000C0000===&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;
| 0x00&lt;br /&gt;
| 0x04&lt;br /&gt;
| [[#Parental Control Restriction Bitmask|Parental Control Restriction Bitmask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x01&lt;br /&gt;
| Rating system used for configuration&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| 0x01&lt;br /&gt;
| Maximum allowed age (20 = No restriction)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| 0x01&lt;br /&gt;
| Secret Question Type (0-5: Pre-defined, 6: Custom)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| 0x01&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x08&lt;br /&gt;
| Parental Controls PIN code (with NULL-termination, although restricted to 4 digits)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x44&lt;br /&gt;
| Secret Answer (UTF-16)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Parental Control Restriction Bitmask====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Restriction name&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Global Parental Controls Enable&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Internet Browser&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Display of 3D Images (disabled on 2DS)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Sharing Images/Audio/Video/Long Text Data&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Online Interaction&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| StreetPass&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Friend Registration&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| DS Download Play&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Nintendo 3DS Shopping Services (eShop / EC Applet)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| View Distributed Videos&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Miiverse (View)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Miiverse (Post)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| &amp;quot;Child Online Privacy Protection&amp;quot; (see [[Cfg:GetRegionCanadaUSA|CFG:IsCoppacsSupported]])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parental Control Settings Block 0x000C0002===&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;
| 0x0000&lt;br /&gt;
| 0x0001&lt;br /&gt;
| Boolean, whether an e-Mail has been registered&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001&lt;br /&gt;
| 0x0101&lt;br /&gt;
| Registered e-Mail address (Plaintext)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0102&lt;br /&gt;
| 0x0068&lt;br /&gt;
| Custom Secret Question (UTF-16)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=User_talk:TimmSkiller&amp;diff=23713</id>
		<title>User talk:TimmSkiller</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=User_talk:TimmSkiller&amp;diff=23713"/>
		<updated>2025-12-26T13:56:02Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;👋👋&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;👋👋&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=User:TimmSkiller&amp;diff=23710</id>
		<title>User:TimmSkiller</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=User:TimmSkiller&amp;diff=23710"/>
		<updated>2025-12-25T13:49:04Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;👋&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;👋&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NCCH/Extended_Header&amp;diff=23704</id>
		<title>NCCH/Extended Header</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NCCH/Extended_Header&amp;diff=23704"/>
		<updated>2025-11-06T16:56:01Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Use separate rows for Flag1 and Flag2 to avoid confusion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the format of the &#039;&#039;&#039;NCCH Extended Header&#039;&#039;&#039;, or &#039;&#039;&#039;exheader&#039;&#039;&#039; for short.&lt;br /&gt;
&lt;br /&gt;
The exheader has two sections:&lt;br /&gt;
&lt;br /&gt;
* The actual exheader data, containing System Control Info (SCI) and Access Control Info (ACI);&lt;br /&gt;
* A signed copy of NCCH HDR public key, and exheader ACI. This version of the ACI is used as limitation to the actual ACI.&lt;br /&gt;
&lt;br /&gt;
== Main Structure ==&lt;br /&gt;
All values are little endian unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
See also: [https://github.com/3DSGuy/Project_CTR/blob/20f708450b9c6e7f64eafa6c2a8eeb25a630c69a/ctrtool/exheader.h]&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x200&amp;lt;/code&amp;gt;&lt;br /&gt;
| SCI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x200&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x200&amp;lt;/code&amp;gt;&lt;br /&gt;
| ACI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x400&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x100&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; signature (RSA-2048-SHA256)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x500&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x100&amp;lt;/code&amp;gt;&lt;br /&gt;
| NCCH header RSA-2048 modulus&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x600&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x200&amp;lt;/code&amp;gt;&lt;br /&gt;
| ACI (for limitation of first ACI)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; signature covers the NCCH header modulus and second ACI. The &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; public key is initialised by the boot ROM.&lt;br /&gt;
&lt;br /&gt;
When loading the exheader, [[FIRM|Process9]] compares the exheader data with the data in the &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; (note that not everything is compared here). When these don&#039;t match, an error is returned. The Process9 code handling this validation was updated with [[6.0.0-11|v6.0]]; the only change in this function seems to be the check for the &amp;quot;Ideal processor&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
== System Control Info ==&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Application title (default is &amp;quot;CtrApp&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x5&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0xD&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Flag (bit 0: &amp;lt;code&amp;gt;CompressExefsCode&amp;lt;/code&amp;gt;, bit 1: &amp;lt;code&amp;gt;SDApplication&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0xE&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Remaster version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0xC&amp;lt;/code&amp;gt;&lt;br /&gt;
| Text code set info&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Stack size&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0xC&amp;lt;/code&amp;gt;&lt;br /&gt;
| Read-only code set info&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x2C&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x30&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0xC&amp;lt;/code&amp;gt;&lt;br /&gt;
| Data code set info&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x3C&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x4&amp;lt;/code&amp;gt;&lt;br /&gt;
| BSS size&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x180&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;48*8&amp;lt;/code&amp;gt;)&lt;br /&gt;
| Dependency [[Title list#00040130 - System Modules|module]] (program ID) list&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;SystemInfo&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Most of these fields are used in [[LOADER:LoadProcess]].&lt;br /&gt;
&lt;br /&gt;
=== Code Set Info ===&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Address&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Physical region size (in page-multiples)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Size (in bytes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== System Info ===&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;SaveData&amp;lt;/code&amp;gt; Size&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Jump ID&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x30&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Access Control Info ==&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x170&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#ARM11 Local System Capabilities|ARM11 local system capabilities]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x170&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x80&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#ARM11 Kernel Capabilities|ARM11 kernel capabilities]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1F0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#ARM9 Access Control|ARM9 access control]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM11 Local System Capabilities ===&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Core version (The Title ID low of the required [[FIRM]])&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0xC&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#Flag1|Flag1]] (implemented starting from [[8.0.0-18]])&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0xD&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#Flag2|Flag2]] (implemented starting from [[8.0.0-18]])&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0xE&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#Flag0|Flag0]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0xF&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Priority&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;16*2&amp;lt;/code&amp;gt;)&lt;br /&gt;
| Resource limit descriptors. The first byte here controls the maximum allowed [[PMApp:SetAppResourceLimit|&amp;lt;code&amp;gt;CpuTime&amp;lt;/code&amp;gt;]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x30&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#Storage Info|Storage info]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x50&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x100&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;32*8&amp;lt;/code&amp;gt;)&lt;br /&gt;
| [[#Service Access Control|Service access control]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x150&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;2*8&amp;lt;/code&amp;gt;)&lt;br /&gt;
| Extended service access control, support for this was implemented with [[9.3.0-21|9.3.0-X]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x160&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0xF&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x16F&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Resource limit category. (0 = &amp;lt;code&amp;gt;APPLICATION&amp;lt;/code&amp;gt;, 1 = &amp;lt;code&amp;gt;SYS_APPLET&amp;lt;/code&amp;gt;, 2 = &amp;lt;code&amp;gt;LIB_APPLET&amp;lt;/code&amp;gt;, 3 = &amp;lt;code&amp;gt;OTHER&amp;lt;/code&amp;gt; (sysmodules running under the BASE memregion))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Flag0 ====&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;
| &amp;lt;code&amp;gt;0-1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ideal processor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2-3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Affinity mask&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4-7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Old3DS system mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Old3DS System Mode =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Prod&amp;lt;/code&amp;gt; (64MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Undefined&amp;lt;/code&amp;gt; (unusable)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Dev1&amp;lt;/code&amp;gt; (96MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Dev2&amp;lt;/code&amp;gt; (80MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Dev3&amp;lt;/code&amp;gt; (72MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Dev4&amp;lt;/code&amp;gt; (32MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6-7&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Undefined&amp;lt;/code&amp;gt; Same as &amp;lt;code&amp;gt;Prod&amp;lt;/code&amp;gt;?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the exheader data, the ideal processor field is a bit-index, while in the &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; the ideal processor field is a bitmask. When the bit specified by the exheader field is not set in the &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; field, an error is returned.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if((1 &amp;lt;&amp;lt; exheaderval) &amp;amp; accessdescval == 0) return error&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
During a FIRM-launch when a &amp;lt;code&amp;gt;TitleInfo&amp;lt;/code&amp;gt; structure was specified, the field at offset [[FIRM#FIRM_Launch_Parameters|0x400]] in the FIRM-launch parameters is set to the SystemMode of the specified title, however in some cases other values are written there. With [[8.0.0-18]] NS will now check the output of [[PTM|PTMSYSM]] command &amp;lt;code&amp;gt;0x040A0000&amp;lt;/code&amp;gt;, when the output is non-zero and a certain NS state field is value-zero, the following is executed otherwise this is skipped. With that check passed on [[8.0.0-18]], NS will then check (&amp;lt;code&amp;gt;Flag2 &amp;amp; 0xF&amp;lt;/code&amp;gt;). When that is &amp;lt;code&amp;gt;value2&amp;lt;/code&amp;gt;, the output value (used for the FIRM-launcher parameter field mentioned above) is set to &amp;lt;code&amp;gt;value7&amp;lt;/code&amp;gt;. Otherwise, when that value is non-zero, the output value is set to 6.&lt;br /&gt;
&lt;br /&gt;
==== Flag1 ====&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;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;EnableL2Cache&amp;lt;/code&amp;gt; (Unknown what this actually does, New3DS-only presumably)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;cpuspeed_804MHz&amp;lt;/code&amp;gt; (Default &amp;quot;cpuspeed&amp;quot; when not set)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2-7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order for the exheader to have any of the above new bits set, the &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; must have the corresponding bit set, otherwise the invalid-exheader error is returned.&lt;br /&gt;
&lt;br /&gt;
Homebrew which runs under a title which has the above &amp;lt;code&amp;gt;cpuspeed&amp;lt;/code&amp;gt; flag set, runs much faster on New3DS. It&#039;s unknown how exactly the system handles these flags.&lt;br /&gt;
&lt;br /&gt;
When launching titles / perhaps other things with [[APT]], [[NS]] uses [[PTMSYSM:ConfigureNew3DSCPU]] with data which originally came from these flags; NS does this regardless of what the running 3DS system is. However, due to a bug(?) in NS the value sent to that command is always either 0x0 or 0x3. When calculating that value, the code only ever uses the cpuspeed field, not the cache field: code to actually load and check the value of the cache field appears to be missing.&lt;br /&gt;
&lt;br /&gt;
==== Flag2 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0-3&amp;lt;/code&amp;gt;&lt;br /&gt;
| New3DS system mode&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4-7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== New3DS System Mode =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Legacy&amp;lt;/code&amp;gt; (use Old3DS system mode)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Prod&amp;lt;/code&amp;gt; (124MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Dev1&amp;lt;/code&amp;gt; (178MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Dev2&amp;lt;/code&amp;gt; (124MB of usable application memory)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4-7&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Undefined&amp;lt;/code&amp;gt; Same as &amp;lt;code&amp;gt;Prod&amp;lt;/code&amp;gt;?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When in &amp;lt;code&amp;gt;Legacy&amp;lt;/code&amp;gt; mode, the actual memory layout is the same as in &amp;lt;code&amp;gt;New3DS Prod&amp;lt;/code&amp;gt;, except the available application memory as reported to the application is reduced to the Old3DS size.&lt;br /&gt;
&lt;br /&gt;
The exheader value for the New3DS system mode value must be ≤ to the &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; value, otherwise the invalid-exheader error is returned.&lt;br /&gt;
&lt;br /&gt;
==== Storage Info ====&lt;br /&gt;
Used in [[FSReg:Register]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Extdata ID&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&lt;br /&gt;
| System savedata IDs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Storage accessible unique IDs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x18&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Filesystem access info&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1F&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Other attributes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
File System Access Info:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit and bitmask&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Category system application&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Category hardware check&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Category filesystem tool&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Debug&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| TWL card backup&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| TWL NAND data&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;&lt;br /&gt;
| BOSS&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x80&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[FS:OpenArchive|&amp;lt;code&amp;gt;sdmc:/&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x100&amp;lt;/code&amp;gt;&lt;br /&gt;
| Core&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x200&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Flash Filesystem|&amp;lt;code&amp;gt;nand:/ro/&amp;lt;/code&amp;gt;]] (Read Only)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x400&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Flash Filesystem|&amp;lt;code&amp;gt;nand:/rw/&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;11&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x800&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Flash Filesystem|&amp;lt;code&amp;gt;nand:/ro/&amp;lt;/code&amp;gt;]] (Write Access)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Category system settings&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x2000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Cardboard&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x4000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Export/Import IVS&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x8000&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[FS:OpenArchive|&amp;lt;code&amp;gt;sdmc:/&amp;lt;/code&amp;gt;]] (Write-only)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;16&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x10000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Switch cleanup (Introduced in [[3.0.0-5|3.0.0]]?) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x20000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Savedata move (Introduced in [[5.0.0-11|5.0.0]]) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;18&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x40000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Shop (Introduced in [[5.0.0-11|5.0.0]]) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;19&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x80000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Shell (Introduced in [[5.0.0-11|5.0.0]]) &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x100000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Category home menu (Introduced in [[6.0.0-11|6.0.0]])&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;21&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x200000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Seed DB. Introduced in [[9.6.0-24|9.6.0-X]] [[FIRM]]. [[Home Menu]] has this bit set starting with [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Other Attributes====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not use ROMFS&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Use Extended savedata access.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When Bit1 is set, the &amp;quot;Extdata ID&amp;quot; and &amp;quot;Storage Accessable Unique IDs&amp;quot; regions are used to store a total of 6 &amp;quot;Accessible Save IDs&amp;quot;. Introduced in [[6.0.0-11|6.0.0]].&lt;br /&gt;
&lt;br /&gt;
==== Service Access Control ====&lt;br /&gt;
This is the list of [[Services_API|services]] which the process is allowed to access, this is registered with the [[Services|services]] manager. Each service listed in the exheader must be listed in the &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt;, otherwise the invalid exheader error is returned. The order of the services for exheader/&amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; doesn&#039;t matter. The &amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; can list services which are not in the exheader, but normally the service-access-control data for exheader/&amp;lt;code&amp;gt;AccessDesc&amp;lt;/code&amp;gt; are exactly the same.&lt;br /&gt;
&lt;br /&gt;
This list is submitted to [[SRVPM:RegisterProcess]].&lt;br /&gt;
&lt;br /&gt;
=== ARM11 Kernel Capabilities ===&lt;br /&gt;
The kernel capability descriptors are passed to [[SVC|svcCreateProcess]].&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x70&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;28*4&amp;lt;/code&amp;gt;)&lt;br /&gt;
| Descriptors&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0x70&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are different descriptor types, determined by the number of leading ones in the binary value representation of bits 20-31. The different types are laid out as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern of bits 20-31&lt;br /&gt;
! Type&lt;br /&gt;
! Fields&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b1110xxxxxxxx&amp;lt;/code&amp;gt;&lt;br /&gt;
| Interrupt info&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b11110xxxxxxx&amp;lt;/code&amp;gt;&lt;br /&gt;
| System call mask&lt;br /&gt;
| Bits 24-26: System call mask table index; Bits 0-23: mask&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b1111110xxxxx&amp;lt;/code&amp;gt;&lt;br /&gt;
| Kernel release version&lt;br /&gt;
| Bits 8-15: Major version; Bits 0-7: Minor version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b11111110xxxx&amp;lt;/code&amp;gt;&lt;br /&gt;
| Handle table size&lt;br /&gt;
| Bits 0-18: size&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b111111110xxx&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#ARM11_Kernel_Flags|Kernel flags]]&lt;br /&gt;
| See below&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b11111111100x&amp;lt;/code&amp;gt;&lt;br /&gt;
| Map IO/static address range&lt;br /&gt;
| Describes a memory mapping like the 0b111111111110 descriptor, but an entire range rather than a single page is mapped. Another 0b11111111100x descriptor must follow this one to denote the (exclusive) end of the address range to map. Bit20 on the first descriptor: map read-only (otherwise RW), bit20 on the second descriptor: map static (cacheable, otherwise IO if the bit is not set)  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0b111111111110&amp;lt;/code&amp;gt;&lt;br /&gt;
| Map IO memory page&lt;br /&gt;
| Bits 0-19: page index to map (virtual address &amp;gt;&amp;gt; 12; the physical address is determined per-page according to [[Memory layout]]); Bit 20: Map read-only (otherwise read-write)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ARM11 Kernel Flags ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| Allow debug&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Force debug&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Allow non-alphanum&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Shared page writing&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Privilege priority&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
| Allow &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; args&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&lt;br /&gt;
| Shared device memory&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Runnable on sleep&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;8-11&amp;lt;/code&amp;gt;&lt;br /&gt;
| Memory type (1: application, 2: system, 3: base)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Memory_layout#NATIVE_FIRM.2FSAFE_MODE_FIRM_Userland_Memory|Special memory]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt;&lt;br /&gt;
| Process has access to CPU core 2 (New3DS only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ARM9 Access Control ===&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;
| &amp;lt;code&amp;gt;0x0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;&lt;br /&gt;
| Descriptors&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0xF&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| ARM9 Descriptor Version. Originally this value had to be ≥ 2. Starting with [[9.3.0-21|9.3.0-X]] this value has to be either value 2 or value 3.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Descriptors:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| Mount [[Flash Filesystem|&amp;lt;code&amp;gt;nand:/&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Mount [[Flash Filesystem|&amp;lt;code&amp;gt;nand:/ro/&amp;lt;/code&amp;gt;]] (Write Access)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Mount [[Flash Filesystem|&amp;lt;code&amp;gt;twln:/&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Mount [[Flash Filesystem|&amp;lt;code&amp;gt;wnand:/&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Mount card SPI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&lt;br /&gt;
| Use SDIF3&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;&lt;br /&gt;
| Create seed&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Use card SPI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;&lt;br /&gt;
| SD application (Not checked)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;&lt;br /&gt;
| Mount [[SD Filesystem|sdmc:/]] (Write Access)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=23696</id>
		<title>GPIO Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPIO_Services&amp;diff=23696"/>
		<updated>2025-09-15T09:50:55Z</updated>

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

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

		<summary type="html">&lt;p&gt;TimmSkiller: Added missing EULA archive title ids&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== CTR Title List Notes ====&lt;br /&gt;
Reports/title-lists [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 sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Category Bit Mask&lt;br /&gt;
!  Title Type&lt;br /&gt;
!  Internal Description&lt;br /&gt;
!  Bit Mask(s)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0010&lt;br /&gt;
|  Application&lt;br /&gt;
|  SYSTEM_APPLICATION&lt;br /&gt;
|  Normal&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;System&lt;br /&gt;
|-&lt;br /&gt;
|  0x001B&lt;br /&gt;
|  System Data Archives&lt;br /&gt;
|  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;
|-&lt;br /&gt;
|  0x009B&lt;br /&gt;
|  Shared Data Archives&lt;br /&gt;
|  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;
|-&lt;br /&gt;
|  0x00DB&lt;br /&gt;
|  System Data Archives&lt;br /&gt;
|  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;
|-&lt;br /&gt;
|  0x0030&lt;br /&gt;
|  Applet&lt;br /&gt;
|  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;
|-&lt;br /&gt;
|  0x0130&lt;br /&gt;
|  Module&lt;br /&gt;
|  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;
|-&lt;br /&gt;
|  0x0138&lt;br /&gt;
|  Firmware &lt;br /&gt;
|  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;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00040010 - System Applications ===&lt;br /&gt;
==== System Application Notes ====&lt;br /&gt;
System Application titles have a unique title low that varies by region.&lt;br /&gt;
Regardless of version, the ExeFS:/.code for mset is the same for USA/EUR/JPN. &lt;br /&gt;
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). &lt;br /&gt;
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;
A limited number of system-applications are included with gamecard-sysupdates. They are: [[System Settings]], [[Download Play]], SAFE_MODE [[System Settings#System Updater|System Updater]], and [[Nintendo 3DS Sound]] (this one was only in firms 3.0.0 - 6.2.0 inclusive). &lt;br /&gt;
The only system-applications included with the New3DS gamecard-sysupdate partition are: &amp;quot;menu&amp;quot; stub and &amp;quot;friend&amp;quot; stub.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  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;
!  [[Product code]]&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;
| CTR-N-HAS?&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]], [[11.5.0-38|v11266]]&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]], [[11.4.0-37|v10241]](New2DSXL), [[11.5.0-38|v10256]]&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]], [[11.5.0-38|v10241]]&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;
| CTR-N-HDL?&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;
| CTR-N-HMK?&lt;br /&gt;
| [[Activity Log]] (PLOG)&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;
| ?&lt;br /&gt;
| [[Health and Safety Information]] (safe)&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;
| 20027300&lt;br /&gt;
| N/A&lt;br /&gt;
| CTR-N-HAC?&lt;br /&gt;
| [[New_3DS]] [[Health and Safety Information]] (ssafe)&lt;br /&gt;
| [[8.1.0-0_New3DS|v2]], [[9.3.0-21|v17]]&lt;br /&gt;
| [[8.1.0-0_New3DS|v1]], [[11.4.0-37|v16]](New2DSXL)&lt;br /&gt;
| Same as EUR.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[9.6.0-24|v2]]&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;
| CTR-N-HEP?&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]], [[11.5.0-38|v5120]]&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]], [[11.4.0-37|v5120]](New2DSXL), [[11.5.0-38|v5120]]&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]],  [[11.5.0-38|v5120]]&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;
| CTR-N-HES?&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]],  [[11.4.0-37|v4096]]&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]], [[11.4.0-37|v4096]]&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]], [[11.4.0-37|v4096]]&lt;br /&gt;
| [[4.0.0-7|v2]], [[11.4.0-37|v1024]]&lt;br /&gt;
| [[4.0.0-7|v2]], [[7.0.0-13|v16]],[[11.4.0-37|v4096]]&lt;br /&gt;
| [[4.1.0-8|v3]], [[11.4.0-37|v1024]]&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;
| CTR-N-HED?&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;
| CTR-N-HME?&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;
| CTR-N-HGR?&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]], [[11.3.0-36|v23552]], [[11.5.0-38|v25600]]&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]], [[11.2.0-35|v22528]], [[11.3.0-36|v23552]], [[11.4.0-37|v24576]](New2DSXL), [[11.5.0-38|v25600]]&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]], [[11.3.0-36|v23552]], [[11.5.0-38|v25600]]&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;
| CTR-N-HCB?&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;
| CTR-N-HMA?&lt;br /&gt;
| [[Nintendo Zone]] (&amp;quot;Nintendo&amp;quot;) (MARS)&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;
| CTR-N-HCH?&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;
| 20027D00&lt;br /&gt;
| N/A&lt;br /&gt;
| ?&lt;br /&gt;
| [[New_3DS]] [[Face Raiders]] (FACE)&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;
| [[9.6.0-24|v2049]]&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;
| CTR-N-HAR?&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;
| CTR-N-HSH?&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;
| (Variable?)&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|v0]], [[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;
| CTR-N-HAF?&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;
| CTR-N-HAJ?&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;
| CTR-P-CTAP&lt;br /&gt;
| [[New_3DS]] HOME menu digital manual&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]], [[11.4.0-37|v48]](New2DSXL)&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;
| CTR-P-CTAP&lt;br /&gt;
| [[New_3DS]] Friends list digital manual&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;
| CTR-P-CTAP&lt;br /&gt;
| [[New_3DS]] Notifications digital manual&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;
| CTR-P-CTAP&lt;br /&gt;
| [[New_3DS]] Game Notes digital manual&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;
=== 0004001B - [[NCCH#CFA|System Data Archives]] ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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]], [[11.0.0-33|v3072]]&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 - System Applets===&lt;br /&gt;
==== System Applet Notes ====&lt;br /&gt;
Most of these processes are applets, see [[NS_and_APT_Services|here]] for details.&lt;br /&gt;
All of the below processes use the &amp;quot;SYSTEM&amp;quot; [[SVC|memory-region]].&lt;br /&gt;
The ExeFS for Home Menu is exactly the same for USA/EUR/JPN.&lt;br /&gt;
The Miiverse applet seems to use a web browser with webkit.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  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;
!  [[Product code]]&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;
|colspan=6 align=center| 00008102&lt;br /&gt;
| CTR-P-CTAP&lt;br /&gt;
| [[NS#Alternate menu|Test Menu]] (Demo1)&lt;br /&gt;
|colspan=3 align=center| ..., v64, ..., v27648&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;
| CTR-P-HMM?&lt;br /&gt;
| [[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]], [[11.1.0-34|v28672]], [[11.3.0-36|v29696]], [[11.5.0-38|v30721]]&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]], [[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]], [[11.1.0-34|v26624]], [[11.3.0-36|v27648]], [[11.5.0-38|v28673]], [[11.17.0-50|v30720]]&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]], [[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]], [[11.1.0-34|v25600]], [[11.3.0-36|v26624]], [[11.4.0-37|v27649]](New2DSXL), [[11.5.0-38|v27649]]&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;
| CTR-N-HCS?&lt;br /&gt;
| Camera applet used by Home-menu (CtrApp)&lt;br /&gt;
|colspan=3| v0, v1036, [[9.0.0-20|v2049]](Also for [[8.1.0-0_New3DS]])&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;
| ?&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;
| CTR-N-HMV?&lt;br /&gt;
| Instruction Manual, applet for displaying instruction manuals&lt;br /&gt;
|colspan=3| v0, v1026, v2048, v3072, [[5.0.0-11|v4097]], [[9.0.0-20|v5120]](Also for [[8.1.0-0_New3DS]])&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;
| CTR-N-HGM?&lt;br /&gt;
| Game Notes (Cherry)&lt;br /&gt;
|colspan=3| v0, v1026, v2049, [[5.0.0-11|v3073]], [[9.0.0-20|v4096]](Also for [[8.1.0-0_New3DS]])&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;
| &lt;br /&gt;
| [[Internet Browser]] (spider)&lt;br /&gt;
|colspan=3| [[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]], [[11.1.0-34|v10240]], [[11.9.0-42|v11297]]&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;
| CTR-N-HBR?&lt;br /&gt;
| [[New 3DS]] [[Internet Browser]] (SKATER)&lt;br /&gt;
|colspan=3| [[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]], [[11.1.0-34|v8192]], [[11.9.0-42|v10272]]&lt;br /&gt;
|-&lt;br /&gt;
|colspan=6| 00008A02&lt;br /&gt;
| &lt;br /&gt;
| Fatal error viewer ([[ErrDisp]])&lt;br /&gt;
|colspan=3| 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;
|-&lt;br /&gt;
|colspan=6| 00008A03&lt;br /&gt;
| &lt;br /&gt;
| SAFE_MODE [[ErrDisp]]&lt;br /&gt;
|colspan=3| v0&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;
| &lt;br /&gt;
| [[New_3DS]] SAFE_MODE [[ErrDisp]]&lt;br /&gt;
|colspan=3| [[8.1.0-0_New3DS|v7169]]&lt;br /&gt;
|-&lt;br /&gt;
| 00008D02&lt;br /&gt;
| 00009602&lt;br /&gt;
| 00009F02&lt;br /&gt;
| 0000A702&lt;br /&gt;
| 0000AF02&lt;br /&gt;
| 0000B702&lt;br /&gt;
| CTR-N-HFR?&lt;br /&gt;
| Friend List (friend)&lt;br /&gt;
|colspan=3| 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;
|-&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;
| CTR-N-HCR?&lt;br /&gt;
| Notifications (newslist)&lt;br /&gt;
|colspan=3| 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;
|-&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;
| CTR-N-HKY?&lt;br /&gt;
| Software Keyboard (swkbd)&lt;br /&gt;
|colspan=3| v0, v1026, v2053, [[7.0.0-13|v3072]], [[9.0.0-20|v4096]](Also for [[8.1.0-0_New3DS]])&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;
| &lt;br /&gt;
| SAFE_MODE Software Keyboard (swkbd)&lt;br /&gt;
|colspan=3| v0&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;
| &lt;br /&gt;
| [[New 3DS]] SAFE_MODE Software Keyboard (swkbd)&lt;br /&gt;
| [[8.1.0-0_New3DS|v1024]]&lt;br /&gt;
|colspan=2|[[9.0.0-20|v0]]&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;
| CTR-N-HMS?&lt;br /&gt;
| Mii picker (appletEd)&lt;br /&gt;
|colspan=3| v0, v1026, [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v3077]]&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;
| CTR-N-HCC?&lt;br /&gt;
| Picture picker (PNOTE_AP)&lt;br /&gt;
|colspan=3| 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;
|-&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;
| CTR-N-HMC?&lt;br /&gt;
| [[Nintendo 3DS Sound|Voice memo]] picker (SNOTE_AP)&lt;br /&gt;
|colspan=3| v0, v3, [[8.0.0-18|v1026]], [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]])&lt;br /&gt;
|-&lt;br /&gt;
|colspan=3| 0000C502&lt;br /&gt;
|colspan=3| 0000CF02&lt;br /&gt;
| CTR-N-HEEA&lt;br /&gt;
CTR-N-HEEK&lt;br /&gt;
| Non-critical (online, etc) error display (error)&lt;br /&gt;
|colspan=3| 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;
|-&lt;br /&gt;
|colspan=3| 0000C503&lt;br /&gt;
|colspan=3| 0000CF03&lt;br /&gt;
| &lt;br /&gt;
| SAFE_MODE error applet&lt;br /&gt;
|colspan=3| v0&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;
| &lt;br /&gt;
| [[New 3DS]] SAFE_MODE error applet&lt;br /&gt;
|colspan=3| [[8.1.0-0_New3DS|v1024]]&lt;br /&gt;
|-&lt;br /&gt;
|colspan=3| 0000CD02&lt;br /&gt;
|colspan=3| 0000D502&lt;br /&gt;
| CTR-N-HADA&lt;br /&gt;
CTR-N-HADK&lt;br /&gt;
| [[Circle Pad Pro]] test/calibration applet (extrapad)&lt;br /&gt;
|colspan=3| v1, v1026, [[8.1.0-0_New3DS|v2048]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v3073]], [[11.4.0-37|v4097]](New2DSXL), [[11.5.0-38|v4097]]&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;
| CTR-N-HAA?&lt;br /&gt;
| eShop applet, used by applications for accessing the eShop, for DLC/etc. Also used by the eShop application itself. (mint)&lt;br /&gt;
|colspan=3| 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]], [[11.2.0-35|v17408]](EUR), [[11.3.0-36|v18432]], [[11.5.0-38|v19457]]&lt;br /&gt;
|-&lt;br /&gt;
| 0000BC02&lt;br /&gt;
| 0000BD02&lt;br /&gt;
| 0000BE02&lt;br /&gt;
| ?&lt;br /&gt;
| N/A&lt;br /&gt;
| ?&lt;br /&gt;
| CTR-N-HAE?&lt;br /&gt;
| Miiverse (olv)&lt;br /&gt;
|colspan=3| [[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;
|-&lt;br /&gt;
|colspan=3| 0000F602&lt;br /&gt;
| ?&lt;br /&gt;
| N/A&lt;br /&gt;
| ?&lt;br /&gt;
| CTR-N-HAGA&lt;br /&gt;
| Likely the &amp;quot;system library&amp;quot; for Miiverse (memolib)&lt;br /&gt;
|colspan=3| [[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;
|-&lt;br /&gt;
| 00008302&lt;br /&gt;
| 00008B02&lt;br /&gt;
| 0000BA02&lt;br /&gt;
| ?&lt;br /&gt;
| N/A&lt;br /&gt;
| ?&lt;br /&gt;
| CTR-N-HAH?&lt;br /&gt;
| In-app Miiverse-posting applet (solv3)&lt;br /&gt;
|colspan=3| [[9.0.0-20|v6]]&lt;br /&gt;
|-&lt;br /&gt;
| 00009502&lt;br /&gt;
| 00009E02&lt;br /&gt;
| 0000B902&lt;br /&gt;
| ?&lt;br /&gt;
| 00008C02&lt;br /&gt;
| 0000BF02&lt;br /&gt;
| CTR-N-HA3?&lt;br /&gt;
| Cabinet ([[amiibo Settings]])&lt;br /&gt;
|colspan=3| [[9.3.0-21|v7]], (v1024 for TWN), [[9.6.0-24|v1031]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0004009B - [[NCCH#CFA|Shared Data Archives]] ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
!  Versions&lt;br /&gt;
|-&lt;br /&gt;
| 00010202&lt;br /&gt;
| 00010202&lt;br /&gt;
| 00010202&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;
| 00010402&lt;br /&gt;
| 00010402&lt;br /&gt;
| 00010402&lt;br /&gt;
| 00010402&lt;br /&gt;
| 00010402&lt;br /&gt;
| 00010402&lt;br /&gt;
| Region Manifest. Mounted as &amp;quot;area:&amp;quot;&lt;br /&gt;
| v0, v1024, v2050, v3072, [[7.0.0-13|v4098]], [[9.6.0-24|v5122]]&lt;br /&gt;
|-&lt;br /&gt;
| 00010602&lt;br /&gt;
| 00010602&lt;br /&gt;
| 00010602&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;
|&lt;br /&gt;
| 00011002&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|  &amp;quot;CHN/CN&amp;quot; Dictionary.&lt;br /&gt;
|  v1&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 00011102  &lt;br /&gt;
| &amp;quot;TWN/TN&amp;quot; dictionary.&lt;br /&gt;
| v1&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011202&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|  &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;
|&lt;br /&gt;
|&lt;br /&gt;
|  &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;
| &lt;br /&gt;
| &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;
|&lt;br /&gt;
|&lt;br /&gt;
| &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;
|&lt;br /&gt;
| &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;
|&lt;br /&gt;
| &lt;br /&gt;
| &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;
|&lt;br /&gt;
| &lt;br /&gt;
| &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;
| &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;
|&lt;br /&gt;
|&lt;br /&gt;
| 00011A02&lt;br /&gt;
|  &lt;br /&gt;
| &amp;quot;KO/KO&amp;quot; dictionary.&lt;br /&gt;
| v1&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 00011B02&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &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;
|&lt;br /&gt;
|&lt;br /&gt;
| &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;
|&lt;br /&gt;
|&lt;br /&gt;
| &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;
| &lt;br /&gt;
|&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;
| 00012402&lt;br /&gt;
| 00012502&lt;br /&gt;
| 00012602&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]] (JPN: [[11.1.0-34|v14336]]) (KOR: [[9.6.0-24|v6148]], [[10.0.0-27|v7169]], [[10.3.0-28|v8193]], [[10.4.0-29|v9216]], [[11.1.0-34|v10240]])&lt;br /&gt;
|-&lt;br /&gt;
| 00013202&lt;br /&gt;
| 00013302&lt;br /&gt;
| 00013102&lt;br /&gt;
| 00013402&lt;br /&gt;
| 00013502&lt;br /&gt;
| 00013602&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]] (KOR: [[9.7.0-25|v1025]])&lt;br /&gt;
|-&lt;br /&gt;
| 00014002&lt;br /&gt;
| 00014002&lt;br /&gt;
| 00014002&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;
| 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;
| 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;
| 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;
| N/A&lt;br /&gt;
| 00015502&lt;br /&gt;
| 0015602&lt;br /&gt;
| Mounted as &amp;quot;rate:&amp;quot;&lt;br /&gt;
| v0 (EUR: v0, v1024) (KOR: v1024)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 000400DB - [[NCCH#CFA|System Data Archives]] ===&lt;br /&gt;
==== System Data Archive Notes ====&lt;br /&gt;
These [[NVer]] titleIDs can be found @ offset 0x320 in every [[CCI]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  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;
!  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;
|colspan=4| [[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]], [[11.1.0-34|v9217]]&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;
|colspan=4| [[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|v18432]], [[11.1.0-34|v19457]], [[11.5.0-38|v20480]], [[11.9.0-42|v22528]]&lt;br /&gt;
|-&lt;br /&gt;
| 00016202&lt;br /&gt;
| 00016302&lt;br /&gt;
| 00016102&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]], [[11.0.0-33|v528]], [[11.1.0-34|v544]], [[11.2.0-35|v560]], [[11.3.0-36|v576]], [[11.5.0-38|v608]], ..., [[11.9.0-42|v672]]&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]], [[10.4.0-29|v384]], [[10.5.0-30|v400]], [[10.6.0-31|v416]], [[10.7.0-32|v432]], [[11.0.0-33|v448]], [[11.1.0-34|v464]], [[11.2.0-35|v480]], [[11.3.0-36|v496]], ..., [[11.9.0-42|v544]]&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]], [[10.4.0-29|v400]], [[10.5.0-30|v416]], [[10.6.0-31|v432]], [[10.7.0-32|v448]], [[11.0.0-33|v464]], [[11.1.0-34|v480]], [[11.2.0-35|v496]], [[11.3.0-36|v512]], ..., [[11.9.0-42|v576]]&lt;br /&gt;
|-&lt;br /&gt;
| 20016202&lt;br /&gt;
| 20016302&lt;br /&gt;
| 20016102&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]], [[11.0.0-33|v528]], [[11.1.0-34|v544]], [[11.2.0-35|v560]], [[11.3.0-36|v576]], ..., [[11.9.0-42|v672]]&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]], [[10.4.0-29|v400]], [[10.5.0-30|v416]], [[10.6.0-31|v432]], [[10.7.0-32|v448]], [[11.0.0-33|v464]], [[11.2.0-35|v496]], [[11.3.0-36|v512]], ..., [[11.9.0-42|v576]]&lt;br /&gt;
|-&lt;br /&gt;
| 00017202&lt;br /&gt;
| 00017302&lt;br /&gt;
| 00017102&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]], [[11.0.0-33|v11264]], [[11.1.0-34|v11280]], [[11.2.0-35|v11296]], [[11.3.0-36|v11312]], [[11.4.0-37|...]], [[11.5.0-38|v11344]], ..., [[11.9.0-42|v11408]]&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]], [[10.4.0-29|v10304]], [[10.5.0-30|v10320]], [[10.6.0-31|v10336]], [[10.7.0-32|v10352]], [[11.2.0-35|v11296]], [[11.3.0-36|v11312]], ..., [[11.9.0-42|v11408]]&lt;br /&gt;
| Same as CHN&lt;br /&gt;
| Same as CHN + [[11.1.0-34|v11280]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00040130 - System [[Services API|Modules]] ===&lt;br /&gt;
==== System Module Notes ====&lt;br /&gt;
Once Home Menu finishes loading, all of the below system modules are running, except for MP, RO, and act which are automatically [[Process_Manager_Services|loaded]] when a process requires them. &lt;br /&gt;
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. &lt;br /&gt;
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;
All of the below 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;
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). &lt;br /&gt;
The exheader dependency list handling change is for the [[New 3DS]] system-module(s), which do not exist on Old3DS. &lt;br /&gt;
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;
{| class=&amp;quot;wikitable sortable&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]], [[11.4.0-37|v12288]](New2DSXL)&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]], [[11.4.0-37|v15360]](New2DSXL)[[11.5.0-38|v15360]]&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;
| 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]], [[11.1.0-34|v7169]]&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]], [[11.3.0-36|v13312]], [[11.5.0-38|v14336]]&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]], [[11.3.0-36|v13312]], [[11.4.0-37|v14336]](New2DSXL)&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]], [[11.4.0-37|v9216]](New2DSXL)&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]], [[11.4.0-37|v14336]]&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]], [[11.14.0-46|v9217]]&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;
| &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]], [[11.0.0-33|v11264]], [[11.1.0-34|v12288]], [[11.2.0-35|v13312]], [[11.3.0-36|v14336]], [[11.4.0-37|v15360]]&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;
| 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]], [[11.4.0-37|v9216]](New2DSXL), [[11.5.0-38|v9216]]&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]], [[11.4.0-37|v3072]](New2DSXL)&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]], [[11.1.0-34|v20482]], [[11.3.0-36|v21504]]&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;
=== 00040138 - [[FIRM|System Firmware]] ===&lt;br /&gt;
==== System Firmare Notes ====&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 sortable&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]], [[11.0.0-33|v24368]], [[11.1.0-34|v25396]], [[11.2.0-35|v26432]], [[11.3.0-36|v27476]]&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]], [[11.0.0-33|v24368]], [[11.1.0-34|v25396]], [[11.2.0-35|v26432]], [[11.3.0-36|v27476]]&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 sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Category Bit Mask&lt;br /&gt;
!  Content Category&lt;br /&gt;
!  Bit Mask(s)&lt;br /&gt;
|-&lt;br /&gt;
|  0x0000&lt;br /&gt;
|  [[Title list/eShop Titles|Application / eShop]]&lt;br /&gt;
|  Normal&lt;br /&gt;
|-&lt;br /&gt;
|  0x0001&lt;br /&gt;
|  Download Play Child&lt;br /&gt;
|  DlpChild&lt;br /&gt;
|-&lt;br /&gt;
|  0x0002&lt;br /&gt;
|  [[EShop Demos|Demo]]&lt;br /&gt;
|  Demo&lt;br /&gt;
|-&lt;br /&gt;
|  0x000E&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;
|-&lt;br /&gt;
|  0x008C&lt;br /&gt;
|  [[Title list/DLC|Downloadable Content]]&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;
|}&lt;br /&gt;
&lt;br /&gt;
=== 00040001 - [[Download Play]] Titles ===&lt;br /&gt;
==== Download Play Notes ====&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;
== Factory Titles ==&lt;br /&gt;
==== Factory Titles Notes ====&lt;br /&gt;
This section is for hard-coded titleIDs referenced in codebins on retail. This can include [[Factory_Setup|factory]]/[[Nintendo_Service_Center_Tools|repair]] titles as well.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TitleID&lt;br /&gt;
!  Description&lt;br /&gt;
!  Versions&lt;br /&gt;
|-&lt;br /&gt;
| 000400000F802A00&lt;br /&gt;
| Unknown. Appears to be a [[9.8.0-25|gamecard]] title. See also [[11.3.0-36|here]].&lt;br /&gt;
Used during [[Nintendo_Service_Center_Tools|repair]], first non-system title listed in [[PTM_Services|playlog]] from repair.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000F802100&lt;br /&gt;
| Used during [[Nintendo_Service_Center_Tools|repair]], second non-system title listed in [[PTM_Services|playlog]] from repair.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000F802200&lt;br /&gt;
| Used during [[Nintendo_Service_Center_Tools|repair]], third non-system title listed in [[PTM_Services|playlog]] from repair.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFFD00&lt;br /&gt;
|  Used by retail NS for appID 0xF11, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFFC00&lt;br /&gt;
|  Used by retail NS for appID 0xF12, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFFB00&lt;br /&gt;
|  Used by retail NS for appID 0xF13, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFF900&lt;br /&gt;
|  Used by retail NS for appID 0xF14, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFF800&lt;br /&gt;
|  Used by retail NS for appID 0xF15, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFF700&lt;br /&gt;
|  Used by retail NS for appID 0xF16, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFF600&lt;br /&gt;
|  Used by retail NS for appID 0xF17, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 000400000FFFF500&lt;br /&gt;
|  Used by retail NS for appID 0xF18, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0004003000008900&lt;br /&gt;
|  Used by retail NS for appID 0xF10, but this isn&#039;t available on retail CDN.&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0004013000001902&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). &lt;br /&gt;
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;
| 0004013000003602&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;
| 000401300FEF0000&lt;br /&gt;
| Referenced in eShop Metadata (NS_UID 50010000000584), but does not exist on retail CDN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TWL (DSi) Titles ==&lt;br /&gt;
==== TWL Title Notes ====&lt;br /&gt;
Bitmask 0x1 for TWL titles denotes a system title (determining whether the title will be updated during a System Update).&lt;br /&gt;
 &lt;br /&gt;
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;
Bitmask 0x10 for TWL titles is found on developer tools.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  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;
|  Developer Tool&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&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;0x10&lt;br /&gt;
|  0x8015&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 00048005 - System Applications===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
==== System Data Archive Notes ====&lt;br /&gt;
New system updates only block DS flash-cards when whitelist is updated, or when TWL_FIRM is updated. &lt;br /&gt;
The whitelist contains the data used for detecting flash-cards, this is used by TWL_FIRM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  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;
=== 00048004 - DSiWare Ports ===&lt;br /&gt;
==== DSiWare Port Notes ====&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;
See [[3DS DSiWare Titles]] for a complete list.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:SendInitializeInfoTo9&amp;diff=23651</id>
		<title>FS:SendInitializeInfoTo9</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:SendInitializeInfoTo9&amp;diff=23651"/>
		<updated>2025-08-04T11:55:49Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0839|0|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0839|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
First waits until PTM has set bit0 of [[Configuration_Memory#Shared_Memory_Page_For_ARM11_Processes|address 0x1FF81086 in configuration memory]], indicating that [[Configuration_Memory#MCU_HW_INFO|MCU_HW_INFO]] has been written.&lt;br /&gt;
&lt;br /&gt;
Then, [[Configuration_Memory#MCU_HW_INFO|MCU_HW_INFO]] is retrieved from configuration memory and is passed into [[FSPXI:SendInitializeInfoTo9]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FSPXI:SendInitializeInfoTo9&amp;diff=23650</id>
		<title>FSPXI:SendInitializeInfoTo9</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FSPXI:SendInitializeInfoTo9&amp;diff=23650"/>
		<updated>2025-08-04T11:51:56Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0036|1|0}} {{IPC/RequestEntry|RUNNING_HW}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0036|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Initializes internal state (related to gamecard slot hardware?) in Process9 according to the given hardware type.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0036|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|[[Configuration_Memory#RUNNING_HW|RUNNING_HW]]}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0036|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Initializes internal state (related to gamecard slot hardware?) in Process9 according to the given hardware type.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNC:Control&amp;diff=23647</id>
		<title>PDNC:Control</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNC:Control&amp;diff=23647"/>
		<updated>2025-08-03T08:15:06Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Redirected page to PDNC:Enable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[PDNC:Enable]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23646</id>
		<title>PDN Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23646"/>
		<updated>2025-08-03T08:10:50Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* PDN Camera Service &amp;quot;pdn:c&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= PDN PTM Service &amp;quot;pdn:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[PDNS:GetWakeStatus|GetWakeStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[PDNS:ConfigureWakeEvents|ConfigureWakeEvents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[PDNS:Acknowledge|Acknowledge]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN DSP Service &amp;quot;pdn:d&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;
| 0x000100C0&lt;br /&gt;
| [[PDND:Control|Control]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN I2S Service &amp;quot;pdn:i&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;
| [[PDNI:Control1|Control1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| [[PDNI:Control2|Control2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Used by [[Codec Services]].&lt;br /&gt;
&lt;br /&gt;
= PDN GSP service &amp;quot;pdn:g&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;
| 0x000100C0&lt;br /&gt;
| [[PDNG:Control|Control]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN Camera Service &amp;quot;pdn:c&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| [[PDNC:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200000&lt;br /&gt;
| [[PDNC:IsEnabled|IsEnabled]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNC:IsEnabled&amp;diff=23645</id>
		<title>PDNC:IsEnabled</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNC:IsEnabled&amp;diff=23645"/>
		<updated>2025-08-03T08:10:21Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0001|2|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEntry|bool, whether or not the camera clock is enabled}} {{IPC/RequestEnd}}  =Description= Returns bit0 of PDN_CAMERA_CNT.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|2|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEntry|bool, whether or not the camera clock is enabled}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Returns bit0 of [[PDN_Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNC:Enable&amp;diff=23644</id>
		<title>PDNC:Enable</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNC:Enable&amp;diff=23644"/>
		<updated>2025-08-03T08:09:13Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|bool, enable clock}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Enables or disables the camera clock using PDN_CAMERA_CNT.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|bool, enable clock}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Enables or disables the camera clock using [[PDN_Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23643</id>
		<title>PDN Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23643"/>
		<updated>2025-08-03T08:07:19Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* PDN GSP service &amp;quot;pdn:g&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= PDN PTM Service &amp;quot;pdn:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[PDNS:GetWakeStatus|GetWakeStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[PDNS:ConfigureWakeEvents|ConfigureWakeEvents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[PDNS:Acknowledge|Acknowledge]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN DSP Service &amp;quot;pdn:d&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;
| 0x000100C0&lt;br /&gt;
| [[PDND:Control|Control]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN I2S Service &amp;quot;pdn:i&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;
| [[PDNI:Control1|Control1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| [[PDNI:Control2|Control2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Used by [[Codec Services]].&lt;br /&gt;
&lt;br /&gt;
= PDN GSP service &amp;quot;pdn:g&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;
| 0x000100C0&lt;br /&gt;
| [[PDNG:Control|Control]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN Camera Service &amp;quot;pdn:c&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| This sets bit0 in [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200000&lt;br /&gt;
| This writes [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] &amp;amp; 1 to u8 cmdreply+8.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNG:Control&amp;diff=23642</id>
		<title>PDNG:Control</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNG:Control&amp;diff=23642"/>
		<updated>2025-08-03T08:07:03Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0001|3|0}} {{IPC/RequestEntry|bool, enable}} {{IPC/RequestEntry|bool, reset}} {{IPC/RequestEntry|bool, resetRegisters}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Controls the GPU by enabling and/or resetting it using PDN_GPU_CNT.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|bool, enable}}&lt;br /&gt;
{{IPC/RequestEntry|bool, reset}}&lt;br /&gt;
{{IPC/RequestEntry|bool, resetRegisters}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Controls the GPU by enabling and/or resetting it using [[PDN_Registers#PDN_GPU_CNT|PDN_GPU_CNT]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23641</id>
		<title>PDN Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23641"/>
		<updated>2025-08-03T08:05:22Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* PDN I2S Service &amp;quot;pdn:i&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= PDN PTM Service &amp;quot;pdn:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[PDNS:GetWakeStatus|GetWakeStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[PDNS:ConfigureWakeEvents|ConfigureWakeEvents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[PDNS:Acknowledge|Acknowledge]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN DSP Service &amp;quot;pdn:d&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;
| 0x000100C0&lt;br /&gt;
| [[PDND:Control|Control]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN I2S Service &amp;quot;pdn:i&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;
| [[PDNI:Control1|Control1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| [[PDNI:Control2|Control2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Used by [[Codec Services]].&lt;br /&gt;
&lt;br /&gt;
= PDN GSP service &amp;quot;pdn:g&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;
| 0x000100C0&lt;br /&gt;
| (bool enableClock, bool resetEngines, bool resetRegisters) Enables and/or resets the GPU, see [[PDN Registers#PDN_GPU_CNT|PDN_GPU_CNT]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN Camera Service &amp;quot;pdn:c&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| This sets bit0 in [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200000&lt;br /&gt;
| This writes [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] &amp;amp; 1 to u8 cmdreply+8.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNI:Control2&amp;diff=23640</id>
		<title>PDNI:Control2</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNI:Control2&amp;diff=23640"/>
		<updated>2025-08-03T08:02:15Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|bool, enable I2S2 clock}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Enables or disables the I2S2 clock using PDN_I2S_CNT.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|bool, enable I2S2 clock}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Enables or disables the I2S2 clock using [[PDN_Registers#PDN_I2S_CNT|PDN_I2S_CNT]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNI:Control1&amp;diff=23639</id>
		<title>PDNI:Control1</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNI:Control1&amp;diff=23639"/>
		<updated>2025-08-03T08:01:59Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|bool, enable I2S1 clock}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Enables or disables the I2S1 clock using PDN_I2S_CNT.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|bool, enable I2S1 clock}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Enables or disables the I2S1 clock using [[PDN_Registers#PDN_I2S_CNT|PDN_I2S_CNT]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23638</id>
		<title>PDN Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23638"/>
		<updated>2025-08-03T07:58:55Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* PDN DSP Service &amp;quot;pdn:d&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= PDN PTM Service &amp;quot;pdn:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[PDNS:GetWakeStatus|GetWakeStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[PDNS:ConfigureWakeEvents|ConfigureWakeEvents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[PDNS:Acknowledge|Acknowledge]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN DSP Service &amp;quot;pdn:d&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;
| 0x000100C0&lt;br /&gt;
| [[PDND:Control|Control]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN I2S Service &amp;quot;pdn:i&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;
| This sets bit0 in [[PDN Registers#PDN_I2S1_CNT|PDN_I2S1_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| This sets bit1 in [[PDN Registers#PDN_I2S2_CNT|PDN_I2S2_CNT]] to u8 cmd+4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Used by [[Codec Services]].&lt;br /&gt;
&lt;br /&gt;
= PDN GSP service &amp;quot;pdn:g&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;
| 0x000100C0&lt;br /&gt;
| (bool enableClock, bool resetEngines, bool resetRegisters) Enables and/or resets the GPU, see [[PDN Registers#PDN_GPU_CNT|PDN_GPU_CNT]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN Camera Service &amp;quot;pdn:c&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| This sets bit0 in [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200000&lt;br /&gt;
| This writes [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] &amp;amp; 1 to u8 cmdreply+8.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDND:Control&amp;diff=23637</id>
		<title>PDND:Control</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDND:Control&amp;diff=23637"/>
		<updated>2025-08-03T07:58:37Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0001|3|0}} {{IPC/RequestEntry|bool, enable}} {{IPC/RequestEntry|bool, reset}} {{IPC/RequestEntry|bool, resetRegisters}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0001|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Controls the DSP by enabling, resetting, or holding it in reset using PDN_DSP_CNT.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|bool, enable}}&lt;br /&gt;
{{IPC/RequestEntry|bool, reset}}&lt;br /&gt;
{{IPC/RequestEntry|bool, resetRegisters}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Controls the DSP by enabling, resetting, or holding it in reset using [[PDN_Registers#PDN_DSP_CNT|PDN_DSP_CNT]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23636</id>
		<title>PDN Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23636"/>
		<updated>2025-08-03T07:54:00Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* PDN PTM Service &amp;quot;pdn:s&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= PDN PTM Service &amp;quot;pdn:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[PDNS:GetWakeStatus|GetWakeStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[PDNS:ConfigureWakeEvents|ConfigureWakeEvents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| [[PDNS:Acknowledge|Acknowledge]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN DSP Service &amp;quot;pdn:d&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;
| 0x000100C0&lt;br /&gt;
| (bool enable, bool reset, bool deassertResetAfterReset) Enables and/or resets the DSP and/or holds it in reset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN I2S Service &amp;quot;pdn:i&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;
| This sets bit0 in [[PDN Registers#PDN_I2S1_CNT|PDN_I2S1_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| This sets bit1 in [[PDN Registers#PDN_I2S2_CNT|PDN_I2S2_CNT]] to u8 cmd+4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Used by [[Codec Services]].&lt;br /&gt;
&lt;br /&gt;
= PDN GSP service &amp;quot;pdn:g&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;
| 0x000100C0&lt;br /&gt;
| (bool enableClock, bool resetEngines, bool resetRegisters) Enables and/or resets the GPU, see [[PDN Registers#PDN_GPU_CNT|PDN_GPU_CNT]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN Camera Service &amp;quot;pdn:c&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| This sets bit0 in [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200000&lt;br /&gt;
| This writes [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] &amp;amp; 1 to u8 cmdreply+8.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNS:Acknowledge&amp;diff=23635</id>
		<title>PDNS:Acknowledge</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNS:Acknowledge&amp;diff=23635"/>
		<updated>2025-08-03T07:53:39Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0003|1|0}} {{IPC/RequestEntry|Wake events to clear/acknowledge}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0003|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Acknowledges the specified wake events.  This writes to PDN_WAKE_REASON to acknowledge the specified set of wake events.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0003|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|[[PDN_Registers#PDN_WAKE_ENABLE|Wake events]] to clear/acknowledge}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0003|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Acknowledges the specified wake events.&lt;br /&gt;
&lt;br /&gt;
This writes to [[PDN_Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]] to acknowledge the specified set of wake events.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23634</id>
		<title>PDN Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23634"/>
		<updated>2025-08-03T07:52:01Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= PDN PTM Service &amp;quot;pdn:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[PDNS:GetWakeStatus|GetWakeStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| [[PDNS:ConfigureWakeEvents|ConfigureWakeEvents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| Acknowledge. Writes cmdword[1] to [[PDN Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN DSP Service &amp;quot;pdn:d&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;
| 0x000100C0&lt;br /&gt;
| (bool enable, bool reset, bool deassertResetAfterReset) Enables and/or resets the DSP and/or holds it in reset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN I2S Service &amp;quot;pdn:i&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;
| This sets bit0 in [[PDN Registers#PDN_I2S1_CNT|PDN_I2S1_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| This sets bit1 in [[PDN Registers#PDN_I2S2_CNT|PDN_I2S2_CNT]] to u8 cmd+4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Used by [[Codec Services]].&lt;br /&gt;
&lt;br /&gt;
= PDN GSP service &amp;quot;pdn:g&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;
| 0x000100C0&lt;br /&gt;
| (bool enableClock, bool resetEngines, bool resetRegisters) Enables and/or resets the GPU, see [[PDN Registers#PDN_GPU_CNT|PDN_GPU_CNT]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN Camera Service &amp;quot;pdn:c&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| This sets bit0 in [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200000&lt;br /&gt;
| This writes [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] &amp;amp; 1 to u8 cmdreply+8.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNS:ConfigureWakeEvents&amp;diff=23633</id>
		<title>PDNS:ConfigureWakeEvents</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNS:ConfigureWakeEvents&amp;diff=23633"/>
		<updated>2025-08-03T07:51:33Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0002|2|0}} {{IPC/RequestEntry|Wake events to enable}} {{IPC/RequestEntry|Wake events to clear/acknowledge}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0002|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Configures events that will wake the system, and acknowledges specified wake...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0002|2|0}}&lt;br /&gt;
{{IPC/RequestEntry|[[PDN_Registers#PDN_WAKE_ENABLE|Wake events]] to enable}}&lt;br /&gt;
{{IPC/RequestEntry|[[PDN_Registers#PDN_WAKE_ENABLE|Wake events]] to clear/acknowledge}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0002|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Configures events that will wake the system, and acknowledges specified wake events.&lt;br /&gt;
&lt;br /&gt;
First, wake events that should be enabled are acknowledged (because they occurred before this policy change) using [[PDN_Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]]. Then, [[PDN_Registers#PDN_WAKE_ENABLE|PDN_WAKE_ENABLE]] is updated to the given set of events to enable. Finally, all wake events other than the enabled ones are cleared/acknowledged in [[PDN_Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23632</id>
		<title>PDN Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDN_Services&amp;diff=23632"/>
		<updated>2025-08-03T07:30:15Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: link to GetWakeStatus command page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
&lt;br /&gt;
= PDN PTM Service &amp;quot;pdn:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[PDNS:GetWakeStatus|GetWakeStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| ConfigureWakeEvents. [[PDN Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]] = cmdword[2] &amp;amp; cmdword[1]. This then writes cmdword[1] to [[PDN Registers#PDN_WAKE_ENABLE|PDN_WAKE_ENABLE]]. [[PDN Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]] = cmdword[2] &amp;amp; ~cmdword[1].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| Acknowledge. Writes cmdword[1] to [[PDN Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN DSP Service &amp;quot;pdn:d&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;
| 0x000100C0&lt;br /&gt;
| (bool enable, bool reset, bool deassertResetAfterReset) Enables and/or resets the DSP and/or holds it in reset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN I2S Service &amp;quot;pdn:i&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;
| This sets bit0 in [[PDN Registers#PDN_I2S1_CNT|PDN_I2S1_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020040&lt;br /&gt;
| This sets bit1 in [[PDN Registers#PDN_I2S2_CNT|PDN_I2S2_CNT]] to u8 cmd+4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Used by [[Codec Services]].&lt;br /&gt;
&lt;br /&gt;
= PDN GSP service &amp;quot;pdn:g&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;
| 0x000100C0&lt;br /&gt;
| (bool enableClock, bool resetEngines, bool resetRegisters) Enables and/or resets the GPU, see [[PDN Registers#PDN_GPU_CNT|PDN_GPU_CNT]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= PDN Camera Service &amp;quot;pdn:c&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| This sets bit0 in [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] to u8 cmd+4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200000&lt;br /&gt;
| This writes [[PDN Registers#PDN_CAMERA_CNT|PDN_CAMERA_CNT]] &amp;amp; 1 to u8 cmdreply+8.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PDNS:GetWakeStatus&amp;diff=23631</id>
		<title>PDNS:GetWakeStatus</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PDNS:GetWakeStatus&amp;diff=23631"/>
		<updated>2025-08-03T07:29:27Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request= {{IPC/Request}} {{IPC/RequestHeader|0x0001|0|0}} {{IPC/RequestEnd}}  =Response= {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0001|3|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEntry|PDN_WAKE_ENABLE value}} {{IPC/RequestEntry|PDN_WAKE_REASON value}} {{IPC/RequestEnd}}  =Description= Returns the current values of the PDN_WAKE_REASON and...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|0|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0001|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEntry|[[PDN_Registers#PDN_WAKE_ENABLE|PDN_WAKE_ENABLE]] value}}&lt;br /&gt;
{{IPC/RequestEntry|[[PDN_Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]] value}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Returns the current values of the [[PDN_Registers#PDN_WAKE_REASON|PDN_WAKE_REASON]] and [[PDN_Registers#PDN_WAKE_ENABLE|PDN_WAKE_ENABLE]] registers.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23618</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23618"/>
		<updated>2025-07-11T07:00:01Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* Filenames and Paths */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Services =&lt;br /&gt;
{{Anchor|FS}}{{Anchor|FSUSER}}{{Anchor|fs:USER}}&lt;br /&gt;
== Filesystem service &amp;quot;fs:USER&amp;quot; ==&lt;br /&gt;
You can at most have 32 FS archive handles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Dummy1|Dummy1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Control|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;
| [[FS:RenameFile|RenameFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectory|DeleteDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectoryRecursively|DeleteDirectoryRecursively]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CreateFile|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;
| [[FS:RenameDirectory|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 ID code has separate access info bitmasks, if it has any&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ControlArchive|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;
| [[FS:Obsoleted_2_0_FormatThisUserSaveData|Obsoleted_2_0_FormatThisUserSaveData]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_CreateSystemSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSystemSaveData|Obsoleted_3_0_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;
| [[FS:GetFreeBytes|GetFreeBytes]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetCardType|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;
| 0x1007&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcFatfsError|GetSdmcFatfsError]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandCid|GetNandCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcSpeedInfo|GetSdmcSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandSpeedInfo|GetNandSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcLog|GetSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandLog|GetNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearSdmcLog|ClearSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearNandLog|ClearNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotIsInserted|CardSlotIsInserted]]&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOn|CardSlotPowerOn]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOff|CardSlotPowerOff]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotGetCardIFPowerStatus|CardSlotGetCardIFPowerStatus]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead_4xIO|CardNorDirectRead_4xIO]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCpuWriteWithoutVerify|CardNorDirectCpuWriteWithoutVerify]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectSectorEraseWithoutVerify|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;
| [[FS:Obsoleted_3_0_CreateExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_CreateSharedExtSaveData|Obsoleted_3_0_CreateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_ReadExtSaveDataIcon|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_EnumerateExtSaveData|Obsoleted_3_0_EnumerateExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_EnumerateSharedExtSaveData|Obsoleted_3_0_EnumerateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_DeleteExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSharedExtSaveData|Obsoleted_3_0_DeleteSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBaudRate|SetCardSpiBaudRate]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBusMode|SetCardSpiBusMode]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SendInitializeInfoTo9|SendInitializeInfoTo9]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialContentIndex|GetSpecialContentIndex]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader|GetLegacyRomHeader]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyBannerData|GetLegacyBannerData]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckAuthorityToAccessExtSaveData|CheckAuthorityToAccessExtSaveData]]&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:QueryTotalQuotaSize|QueryTotalQuotaSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_GetExtDataBlockSize|Obsoleted_3_0_GetExtDataBlockSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:AbnegateAccessRight|AbnegateAccessRight]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteAllExtSaveDataOnNand|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;
| [[FS:CreateSeed|CreateSeed]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetFormatInfo|GetFormatInfo]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader2|GetLegacyRomHeader2]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_2_0_FormatCtrCardUserSaveData|Obsoleted_2_0_FormatCtrCardUserSaveData]]&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetArchiveResource|GetArchiveResource]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:FormatSaveData|FormatSaveData]]&lt;br /&gt;
| 0x6, in some cases this write isn&#039;t needed however&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacySubBannerData|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;
| [[FS:ReadSpecialFile|ReadSpecialFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialFileSize|GetSpecialFileSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateExtSaveData|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;
| [[FS:DeleteExtSaveData|DeleteExtSaveData]]&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;
| [[FS:ReadExtSaveDataIcon|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;
| [[FS:GetExtDataBlockSize|GetExtDataBlockSize]]&lt;br /&gt;
| 0x10100D (this doesn&#039;t apply in certain cases, however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateExtSaveData|EnumerateExtSaveData]]&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560240&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateSystemSaveData|CreateSystemSaveData]]&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;
| [[FS:DeleteSystemSaveData|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:StartDeviceMoveAsSource|StartDeviceMoveAsSource]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:StartDeviceMoveAsDestination|StartDeviceMoveAsDestination]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetArchivePriority|SetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetArchivePriority|GetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetCtrCardLatencyParameter|SetCtrCardLatencyParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D01C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetFsCompatibilityInfo|SetFsCompatibilityInfo]]&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:ResetCardCompatibilityParameter|ResetCardCompatibilityParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SwitchCleanupInvalidSaveData|SwitchCleanupInvalidSaveData]]&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateSystemSaveData|EnumerateSystemSaveData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:InitializeWithSdkVersion|InitializeWithSdkVersion]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetPriority|SetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetPriority|GetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandInfo|Obsoleted_4_0_GetNandInfo]]&lt;br /&gt;
| Stubbed, this returns an error&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:SetSaveDataSecureValue|SetSaveDataSecureValue]]&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;
| [[FS:GetSaveDataSecureValue|GetSaveDataSecureValue]]&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;
| [[FS:ControlSecureSave|ControlSecureSave]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:GetMediaType|GetMediaType]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandEraseCount|Obsoleted_4_0_GetNandEraseCount]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:ReadNandReport|ReadNandReport]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetOtherSaveDataSecureValue|SetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetOtherSaveDataSecureValue|GetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:BeginSaveDataMove|BeginSaveDataMove]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetThisSaveDataSecureValue|SetThisSaveDataSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetThisSaveDataSecureValue|GetThisSaveDataSecureValue]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckArchive|CheckArchive]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710140&lt;br /&gt;
| ?&lt;br /&gt;
| [[FS:TransferSaveDataCMAC|TransferSaveDataCMAC]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08720200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterTitleContentOverlay|RegisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08730100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterTitleContentOverlay|UnregisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterAllTitleContentOverlays|UnregisterAllTitleContentOverlays]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetSaveArchiveSecureValue|SetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSaveArchiveSecureValue|GetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterSpecialTitleContent|RegisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08780100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterSpecialTitleContent|UnregisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087900C2&lt;br /&gt;
| ?&lt;br /&gt;
| Same as [[FS:GetLegacyBannerData|GetLegacyBannerData]], except for the last parameter this internally passes u8 value 0x1 instead of 0x0, for the FSPXI command.&lt;br /&gt;
| 0x101015&lt;br /&gt;
|-&lt;br /&gt;
| 0x087A0180&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddSeed|AddSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087B0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetSeed|GetSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087C0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteSeed|DeleteSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087D0000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumSeeds|GetNumSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087E0042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListSeeds|ListSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087F0100&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:TitleContentHasSeed|TitleContentHasSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08800880&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddTitleTag|AddTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08810080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetTitleTag|GetTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08820080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteTitleTag|DeleteTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08830000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumTitleTags|GetNumTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08840042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListTitleTags|ListTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088500C0&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:CheckTitleSeed|CheckTitleSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088600C0&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| [[FS:CheckUpdatedDat|CheckUpdatedDat]]&lt;br /&gt;
| 0x80000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The question marks from Dummy1 to GetSpecialFileSize on the &amp;quot;available since system version&amp;quot; field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process access info 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 access info field is all zero&#039;s 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&#039;s 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;
{{Anchor|FSLDR}}{{Anchor|fs:LDR}}&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;
{{Anchor|FSReg}}{{Anchor|FSREG}}{{Anchor|fs:REG}}&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;
| [[FSReg:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| [[FSReg:Register|Register]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| [[FSReg:Unregister|Unregister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| [[FSReg:GetProgramInfo|GetProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| [[FSReg:LoadProgram|LoadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| [[FSReg:UnloadProgram|UnloadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| [[FSReg:CheckHostLoadId|CheckHostLoadId]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Only two sessions can be opened for this service at a time, hence no other processes can use this due to [[Process_Manager_Services|pm-module]] and [[Loader_Services|loader]] using this.&lt;br /&gt;
&lt;br /&gt;
=File and directory access=&lt;br /&gt;
==Files==&lt;br /&gt;
File session handles obtained via [[FS:OpenFile]] and [[FS:OpenFileDirectly]] can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. To use this service-like interface, simply call the SendSyncRequest SVC with a file session handle, using the IPC buffer in thread-local storage for parameters and responses, just like you would with a proper service.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[FSFile:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[FSFile:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| [[FSFile:OpenSubFile|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;
| [[FSFile:GetAttributes|GetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| [[FSFile:SetAttributes|SetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| [[FSFile:Flush|Flush]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| [[FSFile:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| [[FSFile:GetPriority|GetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| [[FSFile:OpenLinkFile|OpenLinkFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C010100&lt;br /&gt;
| [[FSFile:GetAvailable|GetAvailable]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
Directory session handles obtained via [[FS:OpenDirectory]] are usable via a service-like interface, following the exact same procedure described above for file sessions.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030040&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:GetPriority|GetPriority]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Archives =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ArchiveId&lt;br /&gt;
!  Description&lt;br /&gt;
!  Accessible via [[Filesystem_services|FS]]&lt;br /&gt;
!  Accessible via [[Filesystem_services_PXI|FSPXI]]&lt;br /&gt;
!  Only accessible by Process9 internally&lt;br /&gt;
!  Requires binary [[FS:OpenFile|Lowpath]]&lt;br /&gt;
!  Required exheader FS access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000003&lt;br /&gt;
| SelfNCCH (including [[#RomFS|RomFS]])&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004&lt;br /&gt;
| SaveData (the saveID/mediatype for this is loaded from data originally from the user process&#039; exheader)&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000006&lt;br /&gt;
| ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x100D, when the input extdataID isn&#039;t listed in the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000007&lt;br /&gt;
| Shared ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000008&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x4, when the input saveID doesn&#039;t match the exheader system-saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000009&lt;br /&gt;
| SDMC&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000000A&lt;br /&gt;
| SDMC Write-Only&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x808E&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345678&lt;br /&gt;
| ExtSaveData for BOSS&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345679&lt;br /&gt;
| CARD SPI FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x16&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567B&lt;br /&gt;
| ExtSaveData, and ExtSaveData for BOSS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567C&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567D&lt;br /&gt;
| NAND RW&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x800&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567E&lt;br /&gt;
| NAND RO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x200&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567F&lt;br /&gt;
| NAND RO Write FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345680&lt;br /&gt;
| Extdata transfer. Used for transferring [[Extdata#NAND_Shared_Extdata|NAND Shared Extdata]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345681&lt;br /&gt;
| System Savedata transfer. Used for transferring [[System_SaveData|System Save Data]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345682&lt;br /&gt;
| Unknown. There&#039;s code for this in spider v9.9, but that code isn&#039;t actually used.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678A&lt;br /&gt;
| Title access. With FS, this allows accessing NCCH/NCSD contents (ExeFS, RomFS, checking if a content uses a seed, checking the validity of the installed seed). FSPXI, additionally, allows opening raw NCCH/NCSD NCCH contents and DSiWare contents for reading, along with encrypted save data.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678B&lt;br /&gt;
| Used internally by Process9 as the lowest level title access archive. Allows for opening various sections of a title (TMD, CMD, raw contents, DLC contents, raw save data (including public/private/banner saves for DSiWare), title and/or content import context files and /data directories for save data.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678C&lt;br /&gt;
| Used internally to access [[Title_Database|Title Database (/dbs)]] files. For SD, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;. For NAND, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_t.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_i.db&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;jumpid.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678D&lt;br /&gt;
| Used internally to access non-title /dbs files on the NAND: &amp;lt;code&amp;gt;certs.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ticket.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678E&lt;br /&gt;
| FSPXI: Program Access (limited subset of merged main title + update/patch title access). For fs:LDR(used by the &amp;quot;loader&amp;quot; FIRM ARM11-process), only &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;. Not accessible with fs:USER.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None, see description.&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AB&lt;br /&gt;
| NAND CTR FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AC&lt;br /&gt;
| TWL PHOTO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AD&lt;br /&gt;
| TWLS (DSi Sound stores recordings here). This is mapped to the FAT12 image stored in the file at [[Twln/shared2/0000]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AE&lt;br /&gt;
| NAND TWL FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AF&lt;br /&gt;
| NAND W FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B0&lt;br /&gt;
| Internally creates the same &amp;quot;ID Storage&amp;quot; wrapper over the NAND that is used for SystemSaveData and Shared ExtData, but all operations are stubbed and return 0xE0C046F8.&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B1&lt;br /&gt;
| Gamecard SaveData (for check). This is a wrapper for UserSaveDataForCheck: the OpenArchive code for that is called with archive-lowpath TID=0/mediatype=2(gamecard).&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B2&lt;br /&gt;
| UserSaveData (for check). This is the same as the regular SaveData archive, except with this the savedata ID and mediatype is loaded from the input archive lowpath.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B3&lt;br /&gt;
| [[3DS_Virtual_Console#NAND_Savegame|AGB Save Data]]&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B4&lt;br /&gt;
| Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]?&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Archives listed as not requiring a binary lowpath, use lowpath type [[FS:OpenFile|empty]].&lt;br /&gt;
&lt;br /&gt;
The above permission bitmasks are from v2.x, see the above Services section for how these are handled.&lt;br /&gt;
&lt;br /&gt;
Archives CTR NAND, NAND RO Write FS, TWL NAND, NAND W FS, and CARD SPI FS require the corresponding process exheader access control mount flag to be set, in the exheader for any of the currently running ARM11 processes, for [[Filesystem_services_PXI|FSPXI]]. The access rights checked by [[Filesystem services|FS]] module for archive mounting with fs:USER, are stored in the process&#039; exheader accessinfo.&lt;br /&gt;
&lt;br /&gt;
The CARDSPI archive allows access to the gamecard CARD1 raw savedata flash(aka &amp;quot;cardspi:/&amp;quot; in [[FIRM|Process9]]), the file lowpath must be WCHAR &amp;quot;/&amp;quot;. The &amp;quot;NAND W FS&amp;quot; archive allows access to the raw NAND image(aka &amp;quot;wnand:/&amp;quot; in Process9), the file lowpath must be WCHAR &amp;quot;/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Filenames and Paths =&lt;br /&gt;
{{Anchor|PathType}}&lt;br /&gt;
==PathType==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Returned internally by Process9, when errors occur it seems(in particular when no nul-terminator was found in the input path). The data ptr is set to NULL.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| INVALID - Specifies an invalid path&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| EMPTY - Specifies an empty path&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| BINARY - Non-text based path. Meaning is per-archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each (signed char)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| UTF16 - Text-based path with UTF-16 characters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In IPC requests, sizes of ASCII and UTF16 paths must include space for the null-terminator. &lt;br /&gt;
&lt;br /&gt;
== Binary LowPath ==&lt;br /&gt;
The format of the data that a binary LowPath points to is custom per archive.&lt;br /&gt;
&lt;br /&gt;
=== SystemSaveData / Extdata / Shared Extdata Archive Path Data Format ===&lt;br /&gt;
&lt;br /&gt;
==== DataAccessPath ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8 [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x1 || only for NAND data (System Savedata / Shared Extdata), otherwise left 0:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 of current system&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Accesses from/to &amp;lt;code&amp;gt;nand:/fixdata&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 from [[Filesystem_services#DeviceMoveContext|Device Move Context]]&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SystemSaveData ====&lt;br /&gt;
&lt;br /&gt;
===== FS =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| save ID low (save ID high is 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===== FSPXI / FS System Savedata Transfer / FSPXI System Savedata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Index word !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 1 || save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Extdata / Shared Extdata ====&lt;br /&gt;
&lt;br /&gt;
===== FS / FS Extdata Transfer / FSPXI Extdata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ext save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ext save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This refers to the extdata filesystem structure&#039;s base directory at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;ext save ID low&amp;gt;/&amp;lt;ext save ID high&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
For FS Extdata, this would acccess &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;directory ID&amp;gt;/&amp;lt;file ID&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;file ID&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
For FS / FSPXI Extdata Transfer, this accesses &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== UserSaveDataForCheck Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]] (must be non-zero)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Lower word saveid&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Upper word saveid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem.&lt;br /&gt;
&lt;br /&gt;
=== 0x567890B4 Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Lower_word_saveid &amp;gt;&amp;gt; 8&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown. Game calculate this using formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0xFFFFFF00 | unknown_b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Title Access Archive Path Data Format ===&lt;br /&gt;
==== Title Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || High-level NCCH content access&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Save data access (high-level, decrypted)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw content (low-level NCCH/SRL) access&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Banner save data access (for DSiWare titles)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FS only: Save data transfer (internally uses generated data from [[FS:BeginSaveDataMove]] as the IV for &amp;quot;Save data access (low-level, encrypted)&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Save data access (low-level, encrypted)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || NCCH Header(s)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;quot;is seeded&amp;quot; check&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seed verify/validate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Header Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[NCCH/Extended_Header|Extheader]] (0x0-0x400)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[NCCH/Extended_Header|Extheader]] AccessDesc (0x400-0x800)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw [[NCCH#NCCH_Header|NCCH Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || Program ID (Title ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || [[Mediatypes|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x7 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Title_Access_Type|Title Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x10 || Dynamic data depending on [[Filesystem_services#Title_Access_Type|Title Access Type]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! High Level NCCH Access !! Save Data Access (high level) !! Raw Content !! FS only: Save Data Transfer&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Dynamic data depending on [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]:&lt;br /&gt;
For ExeFS, (System Menu Data / &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-byte ExeFS file name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For Header Access,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Filesystem_services#NCCH_Header_Access_Type|u64, NCCH Header Access Type]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RomFS,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[NCCH#Content_Types|u64, Allowed content types flag]]&lt;br /&gt;
(&amp;lt;code&amp;gt;(1 &amp;lt;&amp;lt; allowed_type_a) |&lt;br /&gt;
&lt;br /&gt;
(1 &amp;lt;&amp;lt; allowed_type_b)...&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x10 || 16-byte IV for save data crypto&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Save data transfer key from [[FS:BeginSaveDataMove]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x10 || 16-byte seed for titles that require one, or for validating a seed against the check value in the [[NCCH#NCCH_Header|NCCH Header]]&#039;s check value.&lt;br /&gt;
If the title does not use a seed, this should not be included and size 0x14 should be used instead of 0x24.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For encrypted save data access and banner save data access, the entire 0x10 portion of the dynamic data is left blank.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;is seeded check&amp;quot; NCCH access type opens a virtual 1-byte file that reads either 0 or 1; this value is generated on-the-fly and will be 1 if ncchflags[7] has bit5 set (content uses seed), and 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
For NCCH sections that require a seed (e.g. &amp;lt;code&amp;gt;.code&amp;lt;/code&amp;gt;, RomFS, etc.), the additional seed portion of the low path must be populated with the correct seed. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Seed Verify/Validate&amp;quot; NCCH access type also requires the seed portion of the lowpath. The target NCCH content is opened (with the opened file interface being stubbed, meaning no real reads/writes can be performed on it), and the given seed is used to calculate the seed check hash, and part of it is compared to the check value in the NCCH header. If it matches, opening the &amp;quot;file&amp;quot; succeeds, otherwise 0xD900458C is returned. If attempt is made to use the seed validation type on a content that does not use a seed, error 0xC92044E6 is returned.&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
For FS, this archive functions the same, except for the following limitations:&lt;br /&gt;
&lt;br /&gt;
- Only the title access types &amp;quot;High Level NCCH Access&amp;quot; and &amp;quot;High Level Save Data Access&amp;quot;, and &amp;quot;Save Data Transfer&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For high level NCCH access, the types &amp;quot;RomFS&amp;quot;, &amp;quot;System Menu Data&amp;quot;, &amp;quot;Seeded check&amp;quot;, and &amp;quot;Seed Check/Verify&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For &amp;quot;Seed Check/Verify&amp;quot;, rather than providing the title seed in the file path (as is the case for FSPXI), the seed is retrieved from the seed database (meaning the file lowpath size is always 0x14 for FS).&lt;br /&gt;
&lt;br /&gt;
=== Program Access / SelfNCCH access ===&lt;br /&gt;
&lt;br /&gt;
Provides access to a &amp;quot;merged&amp;quot; archive of a base title and, optionally, a separate update (patch) title.&lt;br /&gt;
&lt;br /&gt;
If no patch title exists, the base title is considered to be the patch title, i.e. turning all &amp;quot;patch&amp;quot; accesses into accesses to the base title.&lt;br /&gt;
&lt;br /&gt;
==== Program Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description !! Accesses&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt; || Patch title&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Save Data (high level, decrypted) || -&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RomFS (all [[NCCH#Content_Type|content types]]) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Patch title&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Program Handle from [[PXIPM:RegisterProgram]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Program_Access_Type|Program Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || Dynamic data depending on [[Filesystem_services#Program_Access_Type|Program Access Type]]:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ExeFS files (System Menu Data, etc.) !! RomFS of base title (all [[NCCH#Content_Type|content types]])&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-character ExeFS filename&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, content index of target content&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
- FSPXI allows all access types.&lt;br /&gt;
&lt;br /&gt;
- When used through fs:LDR by loader, FS only provides access to &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
- For SelfNCCH access, the only allowed access types are &amp;quot;RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default)&amp;quot; of the Base or Patch title, and &amp;quot;System Menu Data&amp;quot;. Attempting to access &amp;quot;Save Data&amp;quot; results in error 0xE0E046BE, &amp;quot;RomFS (all [[NCCH#Content_Type|content types]])&amp;quot; in 0xF9604784, and &amp;quot;&amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&amp;quot; in 0xD9004676.&lt;br /&gt;
&lt;br /&gt;
=== [[RomFS]] ===&lt;br /&gt;
&lt;br /&gt;
Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself.&lt;br /&gt;
&lt;br /&gt;
With FSPXI the returned data for RomFS is the entire RomFS section from the NCCH, starting at the IVFC header.&lt;br /&gt;
&lt;br /&gt;
The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath:&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;
| See above. The only values which FS-module doesn&#039;t allow to be used here are:&lt;br /&gt;
* 0x1: Error 0xE0E046BE.&lt;br /&gt;
* 0x3: Error 0xE0E046BE.&lt;br /&gt;
* 0x4: FS-module executes svcBreak when using this.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| See above. Not validated by FS-module.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Anti Savegame Restore=&lt;br /&gt;
Anti Savegame Restore, internally referred to as &#039;&#039;Save Data Rollback Prevention&#039;&#039;, is a feature originally implemented in the FS module with [[4.0.0-7]], which prevents the user from restoring previous versions of a savegame image. This feature is not used (in practice) for gamecard games. When an old version of the save is detected, the application will display an error regarding old savegame version, then delete and recreate the save data (similar to when it is corrupted).&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
When creating the savedata, the application generates a secure value (a 64 bit unsigned integer), then stores it in either the [[DISA_and_DIFF#DISA_header|DISA save image header]] or the [[Filesystem_services#Anti_Savegame_Restore_Save_Data|Anti Savegame Restore Save Data]]. The application then uses the anti-savegame-restore commands ([[FS:SetSaveDataSecureValue]], [[FS:GetSaveDataSecureValue]], [[FS:SetOtherSaveDataSecureValue]], [[FS:GetOtherSaveDataSecureValue]], [[FS:SetThisSaveDataSecureValue]], [[FS:GetThisSaveDataSecureValue]], [[FS:SetSaveArchiveSecureValue]] and [[FS:GetSaveArchiveSecureValue]]) to verify the value known to the game for comparison with the value returned by FS, and to update the value in the corresponding storage location.&lt;br /&gt;
&lt;br /&gt;
Each time the application writes to the savegame, the value should be updated by both the application and through FS. Usually, applications update this value by incrementing it. However, generating a new random-number or other methods of updating it can be used as well.&lt;br /&gt;
&lt;br /&gt;
==Anti Savegame Restore Save Data==&lt;br /&gt;
The save data used for this feature is stored in [[System_SaveData|System Save Data]] ID 0x00010011 and contains only one file, named &amp;lt;code&amp;gt;DB&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
===Main Structure===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of secure value entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x1C000 (8 * 14336) || [[Filesystem_services#SecureValueKey|Secure value keys]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D000 || 0x1C000 (8 * 14336) || u64s, Secure values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SecureValueKey===&lt;br /&gt;
Depending on which command is used, secure value keys can be interpreted as:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Title ID&lt;br /&gt;
|}&lt;br /&gt;
or:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, Unique ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Applications using this feature==&lt;br /&gt;
* Animal Crossing: New Leaf&lt;br /&gt;
* Pokemon X &amp;amp; Y&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire Demo &lt;br /&gt;
* Pokemon Shuffle&lt;br /&gt;
* Super Smash Bros&lt;br /&gt;
* Pokemon Red,Blue and Yellow (GB(C) VC)&lt;br /&gt;
* Rusty&#039;s Real Deal Baseball&lt;br /&gt;
* Megami Meguri&lt;br /&gt;
&lt;br /&gt;
=SEEDDB and TITLETAG=&lt;br /&gt;
With [[9.6.0-24|9.6.0-X]] new [[System_SaveData]] with save ID 0x0001000F was added. This save data contains both the NCCH seed database (SEEDDB) and the title tag database (TITLETAG).&lt;br /&gt;
&lt;br /&gt;
These databases are managed by the commands [[FS:AddSeed]], [[FS:GetSeed]], [[FS:DeleteSeed]], [[FS:GetNumSeeds]] and [[FS:ListSeeds]] for SEEDDB, and [[FS:AddTitleTag]], [[FS:GetTitleTag]], [[FS:DeleteTitleTag]], [[FS:GetNumTitleTags]], and [[FS:ListTitleTags]] for TITLETAG respectively.&lt;br /&gt;
&lt;br /&gt;
Both the [[Home_Menu|HOME Menu]] and the [[NIM_Services|NIM]] module have access to these commands.&lt;br /&gt;
&lt;br /&gt;
==SEEDDB==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;SEEDDB&amp;lt;/code&amp;gt;, it contains the title-unique seed-data used for the new [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of seed data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of seed entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x7D00 (16 * 2000) || Seed data, 16 bytes per seed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TITLETAG Database==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;TITLETAG&amp;lt;/code&amp;gt;, it contains information used by the [[Home_Menu|HOME Menu]] to handle cases when a to-be-released title has been purchased already, that is, to properly install the seed required for [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
When a to-be-released title is purchased, the [[NIM_Services|NIM]] module installs a [[Filesystem_services#TitleTag|title tag]] with enough information about the title for the [[Home_Menu|HOME Menu]] to be able to initiate a seed import once the title has been released (and thus, the title&#039;s NCCH content lock seed). Until the title&#039;s seed is released, and while the title tag remains in the database, the HOME Menu will prevent the user from launching the software as it would not run without the seed. Once released, information from the title tag is used to download the seed, and, if successful, the title tag is removed from the database, making the software playable.&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of title tag data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x3E800 (0x80 * 2000) || [[Filesystem_services#TitleTag|Title Tag]] data, 0x80 bytes per entry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Common Types =&lt;br /&gt;
== MediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Game Card&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemMediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| CTR NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| TWL NAND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| TWL Photo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenFlags ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Read&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Write&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Create&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&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;
| 0x1&lt;br /&gt;
| Is Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Hidden&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Read-Only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WriteOption ==&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;
| 0x1&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Update Time Stamp&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DirectoryEntry ==&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;
| 0x20C&lt;br /&gt;
| UTF-16 Entry Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20C&lt;br /&gt;
| 0xA&lt;br /&gt;
| 8.3 short filename name&lt;br /&gt;
|-&lt;br /&gt;
| 0x216&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8.3 short filename extension&lt;br /&gt;
|-&lt;br /&gt;
| 0x21A&lt;br /&gt;
| 0x1&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x21B&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x21C&lt;br /&gt;
| 0x4&lt;br /&gt;
| [[Filesystem_services#Attributes|Attributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x220&lt;br /&gt;
| 0x8&lt;br /&gt;
| Entry Size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ArchiveResource ==&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;
| Sector byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Cluster byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Partition capacity in clusters&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Available free space in clusters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProgramInfo ==&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;
| 0x8&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x7&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProductInfo ==&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;
| 0x10&lt;br /&gt;
| Product Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Company Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| Remaster Version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IntegrityVerificationSeed ==&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;
|  0x10&lt;br /&gt;
|  AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x120&lt;br /&gt;
|  The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x8&lt;br /&gt;
| Save ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Save ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueSlot ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| SD Application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueEntry ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || When used as an input entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || This entry should be removed.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || This entry should be updated with the given value.&lt;br /&gt;
|}&lt;br /&gt;
When returned from a command:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || No entry with the given slot and title ID was found, or: this entry is unused.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || The entry with the given slot and title ID was found, or: this entry is used.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || u64, Secure Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TitleTag ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Magic, &amp;lt;code&amp;gt;PREP&amp;lt;/code&amp;gt; (PREPurchase install)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || s32, Release date year&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1 || u8, Release date month&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || u8, Release date day&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x2 || u16, Country code&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || u32, Seed status (0: not downloaded yet, 1: last download attempt failed, 2: seed installed successfully)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || Result code from last seed installation attempt &lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || Support error code from last seed installation attempt&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || 0x68 || reserved padding (unused)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBaudRate ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 512KHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 4MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 16MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBusMode ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1-bit&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 4-bit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SpecialContentType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
!  Found in&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| CTR (Old3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| Manual&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| DLP Child&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| KTR (New3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DeviceMoveContext ==&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;
|  0x10&lt;br /&gt;
|  IVs (ID0 of source console)&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x10&lt;br /&gt;
|  Encrypt Parameter (used to calculate the IV for encryption)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23617</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23617"/>
		<updated>2025-07-10T09:36:17Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* Archive Path */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Services =&lt;br /&gt;
{{Anchor|FS}}{{Anchor|FSUSER}}{{Anchor|fs:USER}}&lt;br /&gt;
== Filesystem service &amp;quot;fs:USER&amp;quot; ==&lt;br /&gt;
You can at most have 32 FS archive handles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Dummy1|Dummy1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Control|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;
| [[FS:RenameFile|RenameFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectory|DeleteDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectoryRecursively|DeleteDirectoryRecursively]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CreateFile|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;
| [[FS:RenameDirectory|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 ID code has separate access info bitmasks, if it has any&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ControlArchive|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;
| [[FS:Obsoleted_2_0_FormatThisUserSaveData|Obsoleted_2_0_FormatThisUserSaveData]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_CreateSystemSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSystemSaveData|Obsoleted_3_0_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;
| [[FS:GetFreeBytes|GetFreeBytes]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetCardType|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;
| 0x1007&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcFatfsError|GetSdmcFatfsError]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandCid|GetNandCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcSpeedInfo|GetSdmcSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandSpeedInfo|GetNandSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcLog|GetSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandLog|GetNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearSdmcLog|ClearSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearNandLog|ClearNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotIsInserted|CardSlotIsInserted]]&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOn|CardSlotPowerOn]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOff|CardSlotPowerOff]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotGetCardIFPowerStatus|CardSlotGetCardIFPowerStatus]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead_4xIO|CardNorDirectRead_4xIO]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCpuWriteWithoutVerify|CardNorDirectCpuWriteWithoutVerify]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectSectorEraseWithoutVerify|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;
| [[FS:Obsoleted_3_0_CreateExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_CreateSharedExtSaveData|Obsoleted_3_0_CreateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_ReadExtSaveDataIcon|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_EnumerateExtSaveData|Obsoleted_3_0_EnumerateExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_EnumerateSharedExtSaveData|Obsoleted_3_0_EnumerateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_DeleteExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSharedExtSaveData|Obsoleted_3_0_DeleteSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBaudRate|SetCardSpiBaudRate]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBusMode|SetCardSpiBusMode]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SendInitializeInfoTo9|SendInitializeInfoTo9]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialContentIndex|GetSpecialContentIndex]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader|GetLegacyRomHeader]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyBannerData|GetLegacyBannerData]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckAuthorityToAccessExtSaveData|CheckAuthorityToAccessExtSaveData]]&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:QueryTotalQuotaSize|QueryTotalQuotaSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_GetExtDataBlockSize|Obsoleted_3_0_GetExtDataBlockSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:AbnegateAccessRight|AbnegateAccessRight]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteAllExtSaveDataOnNand|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;
| [[FS:CreateSeed|CreateSeed]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetFormatInfo|GetFormatInfo]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader2|GetLegacyRomHeader2]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_2_0_FormatCtrCardUserSaveData|Obsoleted_2_0_FormatCtrCardUserSaveData]]&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetArchiveResource|GetArchiveResource]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:FormatSaveData|FormatSaveData]]&lt;br /&gt;
| 0x6, in some cases this write isn&#039;t needed however&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacySubBannerData|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;
| [[FS:ReadSpecialFile|ReadSpecialFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialFileSize|GetSpecialFileSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateExtSaveData|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;
| [[FS:DeleteExtSaveData|DeleteExtSaveData]]&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;
| [[FS:ReadExtSaveDataIcon|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;
| [[FS:GetExtDataBlockSize|GetExtDataBlockSize]]&lt;br /&gt;
| 0x10100D (this doesn&#039;t apply in certain cases, however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateExtSaveData|EnumerateExtSaveData]]&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560240&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateSystemSaveData|CreateSystemSaveData]]&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;
| [[FS:DeleteSystemSaveData|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:StartDeviceMoveAsSource|StartDeviceMoveAsSource]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:StartDeviceMoveAsDestination|StartDeviceMoveAsDestination]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetArchivePriority|SetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetArchivePriority|GetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetCtrCardLatencyParameter|SetCtrCardLatencyParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D01C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetFsCompatibilityInfo|SetFsCompatibilityInfo]]&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:ResetCardCompatibilityParameter|ResetCardCompatibilityParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SwitchCleanupInvalidSaveData|SwitchCleanupInvalidSaveData]]&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateSystemSaveData|EnumerateSystemSaveData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:InitializeWithSdkVersion|InitializeWithSdkVersion]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetPriority|SetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetPriority|GetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandInfo|Obsoleted_4_0_GetNandInfo]]&lt;br /&gt;
| Stubbed, this returns an error&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:SetSaveDataSecureValue|SetSaveDataSecureValue]]&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;
| [[FS:GetSaveDataSecureValue|GetSaveDataSecureValue]]&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;
| [[FS:ControlSecureSave|ControlSecureSave]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:GetMediaType|GetMediaType]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandEraseCount|Obsoleted_4_0_GetNandEraseCount]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:ReadNandReport|ReadNandReport]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetOtherSaveDataSecureValue|SetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetOtherSaveDataSecureValue|GetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:BeginSaveDataMove|BeginSaveDataMove]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetThisSaveDataSecureValue|SetThisSaveDataSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetThisSaveDataSecureValue|GetThisSaveDataSecureValue]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckArchive|CheckArchive]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710140&lt;br /&gt;
| ?&lt;br /&gt;
| [[FS:TransferSaveDataCMAC|TransferSaveDataCMAC]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08720200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterTitleContentOverlay|RegisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08730100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterTitleContentOverlay|UnregisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterAllTitleContentOverlays|UnregisterAllTitleContentOverlays]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetSaveArchiveSecureValue|SetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSaveArchiveSecureValue|GetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterSpecialTitleContent|RegisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08780100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterSpecialTitleContent|UnregisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087900C2&lt;br /&gt;
| ?&lt;br /&gt;
| Same as [[FS:GetLegacyBannerData|GetLegacyBannerData]], except for the last parameter this internally passes u8 value 0x1 instead of 0x0, for the FSPXI command.&lt;br /&gt;
| 0x101015&lt;br /&gt;
|-&lt;br /&gt;
| 0x087A0180&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddSeed|AddSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087B0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetSeed|GetSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087C0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteSeed|DeleteSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087D0000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumSeeds|GetNumSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087E0042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListSeeds|ListSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087F0100&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:TitleContentHasSeed|TitleContentHasSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08800880&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddTitleTag|AddTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08810080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetTitleTag|GetTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08820080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteTitleTag|DeleteTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08830000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumTitleTags|GetNumTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08840042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListTitleTags|ListTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088500C0&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:CheckTitleSeed|CheckTitleSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088600C0&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| [[FS:CheckUpdatedDat|CheckUpdatedDat]]&lt;br /&gt;
| 0x80000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The question marks from Dummy1 to GetSpecialFileSize on the &amp;quot;available since system version&amp;quot; field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process access info 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 access info field is all zero&#039;s 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&#039;s 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;
{{Anchor|FSLDR}}{{Anchor|fs:LDR}}&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;
{{Anchor|FSReg}}{{Anchor|FSREG}}{{Anchor|fs:REG}}&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;
| [[FSReg:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| [[FSReg:Register|Register]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| [[FSReg:Unregister|Unregister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| [[FSReg:GetProgramInfo|GetProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| [[FSReg:LoadProgram|LoadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| [[FSReg:UnloadProgram|UnloadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| [[FSReg:CheckHostLoadId|CheckHostLoadId]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Only two sessions can be opened for this service at a time, hence no other processes can use this due to [[Process_Manager_Services|pm-module]] and [[Loader_Services|loader]] using this.&lt;br /&gt;
&lt;br /&gt;
=File and directory access=&lt;br /&gt;
==Files==&lt;br /&gt;
File session handles obtained via [[FS:OpenFile]] and [[FS:OpenFileDirectly]] can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. To use this service-like interface, simply call the SendSyncRequest SVC with a file session handle, using the IPC buffer in thread-local storage for parameters and responses, just like you would with a proper service.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[FSFile:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[FSFile:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| [[FSFile:OpenSubFile|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;
| [[FSFile:GetAttributes|GetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| [[FSFile:SetAttributes|SetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| [[FSFile:Flush|Flush]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| [[FSFile:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| [[FSFile:GetPriority|GetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| [[FSFile:OpenLinkFile|OpenLinkFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C010100&lt;br /&gt;
| [[FSFile:GetAvailable|GetAvailable]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
Directory session handles obtained via [[FS:OpenDirectory]] are usable via a service-like interface, following the exact same procedure described above for file sessions.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030040&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:GetPriority|GetPriority]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Archives =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ArchiveId&lt;br /&gt;
!  Description&lt;br /&gt;
!  Accessible via [[Filesystem_services|FS]]&lt;br /&gt;
!  Accessible via [[Filesystem_services_PXI|FSPXI]]&lt;br /&gt;
!  Only accessible by Process9 internally&lt;br /&gt;
!  Requires binary [[FS:OpenFile|Lowpath]]&lt;br /&gt;
!  Required exheader FS access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000003&lt;br /&gt;
| SelfNCCH (including [[#RomFS|RomFS]])&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004&lt;br /&gt;
| SaveData (the saveID/mediatype for this is loaded from data originally from the user process&#039; exheader)&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000006&lt;br /&gt;
| ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x100D, when the input extdataID isn&#039;t listed in the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000007&lt;br /&gt;
| Shared ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000008&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x4, when the input saveID doesn&#039;t match the exheader system-saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000009&lt;br /&gt;
| SDMC&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000000A&lt;br /&gt;
| SDMC Write-Only&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x808E&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345678&lt;br /&gt;
| ExtSaveData for BOSS&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345679&lt;br /&gt;
| CARD SPI FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x16&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567B&lt;br /&gt;
| ExtSaveData, and ExtSaveData for BOSS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567C&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567D&lt;br /&gt;
| NAND RW&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x800&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567E&lt;br /&gt;
| NAND RO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x200&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567F&lt;br /&gt;
| NAND RO Write FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345680&lt;br /&gt;
| Extdata transfer. Used for transferring [[Extdata#NAND_Shared_Extdata|NAND Shared Extdata]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345681&lt;br /&gt;
| System Savedata transfer. Used for transferring [[System_SaveData|System Save Data]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345682&lt;br /&gt;
| Unknown. There&#039;s code for this in spider v9.9, but that code isn&#039;t actually used.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678A&lt;br /&gt;
| Title access. With FS, this allows accessing NCCH/NCSD contents (ExeFS, RomFS, checking if a content uses a seed, checking the validity of the installed seed). FSPXI, additionally, allows opening raw NCCH/NCSD NCCH contents and DSiWare contents for reading, along with encrypted save data.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678B&lt;br /&gt;
| Used internally by Process9 as the lowest level title access archive. Allows for opening various sections of a title (TMD, CMD, raw contents, DLC contents, raw save data (including public/private/banner saves for DSiWare), title and/or content import context files and /data directories for save data.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678C&lt;br /&gt;
| Used internally to access [[Title_Database|Title Database (/dbs)]] files. For SD, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;. For NAND, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_t.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_i.db&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;jumpid.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678D&lt;br /&gt;
| Used internally to access non-title /dbs files on the NAND: &amp;lt;code&amp;gt;certs.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ticket.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678E&lt;br /&gt;
| FSPXI: Program Access (limited subset of merged main title + update/patch title access). For fs:LDR(used by the &amp;quot;loader&amp;quot; FIRM ARM11-process), only &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;. Not accessible with fs:USER.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None, see description.&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AB&lt;br /&gt;
| NAND CTR FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AC&lt;br /&gt;
| TWL PHOTO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AD&lt;br /&gt;
| TWLS (DSi Sound stores recordings here). This is mapped to the FAT12 image stored in the file at [[Twln/shared2/0000]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AE&lt;br /&gt;
| NAND TWL FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AF&lt;br /&gt;
| NAND W FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B0&lt;br /&gt;
| Internally creates the same &amp;quot;ID Storage&amp;quot; wrapper over the NAND that is used for SystemSaveData and Shared ExtData, but all operations are stubbed and return 0xE0C046F8.&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B1&lt;br /&gt;
| Gamecard SaveData (for check). This is a wrapper for UserSaveDataForCheck: the OpenArchive code for that is called with archive-lowpath TID=0/mediatype=2(gamecard).&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B2&lt;br /&gt;
| UserSaveData (for check). This is the same as the regular SaveData archive, except with this the savedata ID and mediatype is loaded from the input archive lowpath.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B3&lt;br /&gt;
| [[3DS_Virtual_Console#NAND_Savegame|AGB Save Data]]&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B4&lt;br /&gt;
| Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]?&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Archives listed as not requiring a binary lowpath, use lowpath type [[FS:OpenFile|empty]].&lt;br /&gt;
&lt;br /&gt;
The above permission bitmasks are from v2.x, see the above Services section for how these are handled.&lt;br /&gt;
&lt;br /&gt;
Archives CTR NAND, NAND RO Write FS, TWL NAND, NAND W FS, and CARD SPI FS require the corresponding process exheader access control mount flag to be set, in the exheader for any of the currently running ARM11 processes, for [[Filesystem_services_PXI|FSPXI]]. The access rights checked by [[Filesystem services|FS]] module for archive mounting with fs:USER, are stored in the process&#039; exheader accessinfo.&lt;br /&gt;
&lt;br /&gt;
The CARDSPI archive allows access to the gamecard CARD1 raw savedata flash(aka &amp;quot;cardspi:/&amp;quot; in [[FIRM|Process9]]), the file lowpath must be WCHAR &amp;quot;/&amp;quot;. The &amp;quot;NAND W FS&amp;quot; archive allows access to the raw NAND image(aka &amp;quot;wnand:/&amp;quot; in Process9), the file lowpath must be WCHAR &amp;quot;/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Filenames and Paths =&lt;br /&gt;
{{Anchor|PathType}} PathType:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Returned internally by Process9, when errors occur it seems(in particular when no nul-terminator was found in the input path). The data ptr is set to NULL.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| INVALID - Specifies an invalid path&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| EMPTY - Specifies an empty path&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| BINARY - Non-text based path. Meaning is per-archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each (signed char)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| UTF16 - Text-based path with UTF-16 characters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In IPC requests, sizes of ASCII and UTF16 paths must include space for the null-terminator. &lt;br /&gt;
&lt;br /&gt;
== Binary LowPath ==&lt;br /&gt;
The format of the data that a binary LowPath points to is custom per archive.&lt;br /&gt;
&lt;br /&gt;
=== SystemSaveData / Extdata / Shared Extdata Archive Path Data Format ===&lt;br /&gt;
&lt;br /&gt;
==== DataAccessPath ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8 [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x1 || only for NAND data (System Savedata / Shared Extdata), otherwise left 0:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 of current system&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Accesses from/to &amp;lt;code&amp;gt;nand:/fixdata&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 from [[Filesystem_services#DeviceMoveContext|Device Move Context]]&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SystemSaveData ====&lt;br /&gt;
&lt;br /&gt;
===== FS =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| save ID low (save ID high is 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===== FSPXI / FS System Savedata Transfer / FSPXI System Savedata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Index word !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 1 || save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Extdata / Shared Extdata ====&lt;br /&gt;
&lt;br /&gt;
===== FS / FS Extdata Transfer / FSPXI Extdata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ext save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ext save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This refers to the extdata filesystem structure&#039;s base directory at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;ext save ID low&amp;gt;/&amp;lt;ext save ID high&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
For FS Extdata, this would acccess &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;directory ID&amp;gt;/&amp;lt;file ID&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;file ID&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
For FS / FSPXI Extdata Transfer, this accesses &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== UserSaveDataForCheck Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]] (must be non-zero)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Lower word saveid&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Upper word saveid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem.&lt;br /&gt;
&lt;br /&gt;
=== 0x567890B4 Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Lower_word_saveid &amp;gt;&amp;gt; 8&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown. Game calculate this using formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0xFFFFFF00 | unknown_b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Title Access Archive Path Data Format ===&lt;br /&gt;
==== Title Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || High-level NCCH content access&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Save data access (high-level, decrypted)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw content (low-level NCCH/SRL) access&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Banner save data access (for DSiWare titles)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FS only: Save data transfer (internally uses generated data from [[FS:BeginSaveDataMove]] as the IV for &amp;quot;Save data access (low-level, encrypted)&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Save data access (low-level, encrypted)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || NCCH Header(s)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;quot;is seeded&amp;quot; check&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seed verify/validate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Header Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[NCCH/Extended_Header|Extheader]] (0x0-0x400)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[NCCH/Extended_Header|Extheader]] AccessDesc (0x400-0x800)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw [[NCCH#NCCH_Header|NCCH Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || Program ID (Title ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || [[Mediatypes|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x7 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Title_Access_Type|Title Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x10 || Dynamic data depending on [[Filesystem_services#Title_Access_Type|Title Access Type]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! High Level NCCH Access !! Save Data Access (high level) !! Raw Content !! FS only: Save Data Transfer&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Dynamic data depending on [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]:&lt;br /&gt;
For ExeFS, (System Menu Data / &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-byte ExeFS file name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For Header Access,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Filesystem_services#NCCH_Header_Access_Type|u64, NCCH Header Access Type]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RomFS,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[NCCH#Content_Types|u64, Allowed content types flag]]&lt;br /&gt;
(&amp;lt;code&amp;gt;(1 &amp;lt;&amp;lt; allowed_type_a) |&lt;br /&gt;
&lt;br /&gt;
(1 &amp;lt;&amp;lt; allowed_type_b)...&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x10 || 16-byte IV for save data crypto&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Save data transfer key from [[FS:BeginSaveDataMove]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x10 || 16-byte seed for titles that require one, or for validating a seed against the check value in the [[NCCH#NCCH_Header|NCCH Header]]&#039;s check value.&lt;br /&gt;
If the title does not use a seed, this should not be included and size 0x14 should be used instead of 0x24.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For encrypted save data access and banner save data access, the entire 0x10 portion of the dynamic data is left blank.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;is seeded check&amp;quot; NCCH access type opens a virtual 1-byte file that reads either 0 or 1; this value is generated on-the-fly and will be 1 if ncchflags[7] has bit5 set (content uses seed), and 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
For NCCH sections that require a seed (e.g. &amp;lt;code&amp;gt;.code&amp;lt;/code&amp;gt;, RomFS, etc.), the additional seed portion of the low path must be populated with the correct seed. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Seed Verify/Validate&amp;quot; NCCH access type also requires the seed portion of the lowpath. The target NCCH content is opened (with the opened file interface being stubbed, meaning no real reads/writes can be performed on it), and the given seed is used to calculate the seed check hash, and part of it is compared to the check value in the NCCH header. If it matches, opening the &amp;quot;file&amp;quot; succeeds, otherwise 0xD900458C is returned. If attempt is made to use the seed validation type on a content that does not use a seed, error 0xC92044E6 is returned.&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
For FS, this archive functions the same, except for the following limitations:&lt;br /&gt;
&lt;br /&gt;
- Only the title access types &amp;quot;High Level NCCH Access&amp;quot; and &amp;quot;High Level Save Data Access&amp;quot;, and &amp;quot;Save Data Transfer&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For high level NCCH access, the types &amp;quot;RomFS&amp;quot;, &amp;quot;System Menu Data&amp;quot;, &amp;quot;Seeded check&amp;quot;, and &amp;quot;Seed Check/Verify&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For &amp;quot;Seed Check/Verify&amp;quot;, rather than providing the title seed in the file path (as is the case for FSPXI), the seed is retrieved from the seed database (meaning the file lowpath size is always 0x14 for FS).&lt;br /&gt;
&lt;br /&gt;
=== Program Access / SelfNCCH access ===&lt;br /&gt;
&lt;br /&gt;
Provides access to a &amp;quot;merged&amp;quot; archive of a base title and, optionally, a separate update (patch) title.&lt;br /&gt;
&lt;br /&gt;
If no patch title exists, the base title is considered to be the patch title, i.e. turning all &amp;quot;patch&amp;quot; accesses into accesses to the base title.&lt;br /&gt;
&lt;br /&gt;
==== Program Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description !! Accesses&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt; || Patch title&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Save Data (high level, decrypted) || -&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RomFS (all [[NCCH#Content_Type|content types]]) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Patch title&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Program Handle from [[PXIPM:RegisterProgram]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Program_Access_Type|Program Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || Dynamic data depending on [[Filesystem_services#Program_Access_Type|Program Access Type]]:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ExeFS files (System Menu Data, etc.) !! RomFS of base title (all [[NCCH#Content_Type|content types]])&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-character ExeFS filename&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, content index of target content&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
- FSPXI allows all access types.&lt;br /&gt;
&lt;br /&gt;
- When used through fs:LDR by loader, FS only provides access to &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
- For SelfNCCH access, the only allowed access types are &amp;quot;RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default)&amp;quot; of the Base or Patch title, and &amp;quot;System Menu Data&amp;quot;. Attempting to access &amp;quot;Save Data&amp;quot; results in error 0xE0E046BE, &amp;quot;RomFS (all [[NCCH#Content_Type|content types]])&amp;quot; in 0xF9604784, and &amp;quot;&amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&amp;quot; in 0xD9004676.&lt;br /&gt;
&lt;br /&gt;
=== [[RomFS]] ===&lt;br /&gt;
&lt;br /&gt;
Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself.&lt;br /&gt;
&lt;br /&gt;
With FSPXI the returned data for RomFS is the entire RomFS section from the NCCH, starting at the IVFC header.&lt;br /&gt;
&lt;br /&gt;
The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath:&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;
| See above. The only values which FS-module doesn&#039;t allow to be used here are:&lt;br /&gt;
* 0x1: Error 0xE0E046BE.&lt;br /&gt;
* 0x3: Error 0xE0E046BE.&lt;br /&gt;
* 0x4: FS-module executes svcBreak when using this.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| See above. Not validated by FS-module.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Anti Savegame Restore=&lt;br /&gt;
Anti Savegame Restore, internally referred to as &#039;&#039;Save Data Rollback Prevention&#039;&#039;, is a feature originally implemented in the FS module with [[4.0.0-7]], which prevents the user from restoring previous versions of a savegame image. This feature is not used (in practice) for gamecard games. When an old version of the save is detected, the application will display an error regarding old savegame version, then delete and recreate the save data (similar to when it is corrupted).&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
When creating the savedata, the application generates a secure value (a 64 bit unsigned integer), then stores it in either the [[DISA_and_DIFF#DISA_header|DISA save image header]] or the [[Filesystem_services#Anti_Savegame_Restore_Save_Data|Anti Savegame Restore Save Data]]. The application then uses the anti-savegame-restore commands ([[FS:SetSaveDataSecureValue]], [[FS:GetSaveDataSecureValue]], [[FS:SetOtherSaveDataSecureValue]], [[FS:GetOtherSaveDataSecureValue]], [[FS:SetThisSaveDataSecureValue]], [[FS:GetThisSaveDataSecureValue]], [[FS:SetSaveArchiveSecureValue]] and [[FS:GetSaveArchiveSecureValue]]) to verify the value known to the game for comparison with the value returned by FS, and to update the value in the corresponding storage location.&lt;br /&gt;
&lt;br /&gt;
Each time the application writes to the savegame, the value should be updated by both the application and through FS. Usually, applications update this value by incrementing it. However, generating a new random-number or other methods of updating it can be used as well.&lt;br /&gt;
&lt;br /&gt;
==Anti Savegame Restore Save Data==&lt;br /&gt;
The save data used for this feature is stored in [[System_SaveData|System Save Data]] ID 0x00010011 and contains only one file, named &amp;lt;code&amp;gt;DB&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
===Main Structure===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of secure value entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x1C000 (8 * 14336) || [[Filesystem_services#SecureValueKey|Secure value keys]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D000 || 0x1C000 (8 * 14336) || u64s, Secure values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SecureValueKey===&lt;br /&gt;
Depending on which command is used, secure value keys can be interpreted as:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Title ID&lt;br /&gt;
|}&lt;br /&gt;
or:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, Unique ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Applications using this feature==&lt;br /&gt;
* Animal Crossing: New Leaf&lt;br /&gt;
* Pokemon X &amp;amp; Y&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire Demo &lt;br /&gt;
* Pokemon Shuffle&lt;br /&gt;
* Super Smash Bros&lt;br /&gt;
* Pokemon Red,Blue and Yellow (GB(C) VC)&lt;br /&gt;
* Rusty&#039;s Real Deal Baseball&lt;br /&gt;
* Megami Meguri&lt;br /&gt;
&lt;br /&gt;
=SEEDDB and TITLETAG=&lt;br /&gt;
With [[9.6.0-24|9.6.0-X]] new [[System_SaveData]] with save ID 0x0001000F was added. This save data contains both the NCCH seed database (SEEDDB) and the title tag database (TITLETAG).&lt;br /&gt;
&lt;br /&gt;
These databases are managed by the commands [[FS:AddSeed]], [[FS:GetSeed]], [[FS:DeleteSeed]], [[FS:GetNumSeeds]] and [[FS:ListSeeds]] for SEEDDB, and [[FS:AddTitleTag]], [[FS:GetTitleTag]], [[FS:DeleteTitleTag]], [[FS:GetNumTitleTags]], and [[FS:ListTitleTags]] for TITLETAG respectively.&lt;br /&gt;
&lt;br /&gt;
Both the [[Home_Menu|HOME Menu]] and the [[NIM_Services|NIM]] module have access to these commands.&lt;br /&gt;
&lt;br /&gt;
==SEEDDB==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;SEEDDB&amp;lt;/code&amp;gt;, it contains the title-unique seed-data used for the new [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of seed data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of seed entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x7D00 (16 * 2000) || Seed data, 16 bytes per seed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TITLETAG Database==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;TITLETAG&amp;lt;/code&amp;gt;, it contains information used by the [[Home_Menu|HOME Menu]] to handle cases when a to-be-released title has been purchased already, that is, to properly install the seed required for [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
When a to-be-released title is purchased, the [[NIM_Services|NIM]] module installs a [[Filesystem_services#TitleTag|title tag]] with enough information about the title for the [[Home_Menu|HOME Menu]] to be able to initiate a seed import once the title has been released (and thus, the title&#039;s NCCH content lock seed). Until the title&#039;s seed is released, and while the title tag remains in the database, the HOME Menu will prevent the user from launching the software as it would not run without the seed. Once released, information from the title tag is used to download the seed, and, if successful, the title tag is removed from the database, making the software playable.&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of title tag data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x3E800 (0x80 * 2000) || [[Filesystem_services#TitleTag|Title Tag]] data, 0x80 bytes per entry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Common Types =&lt;br /&gt;
== MediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Game Card&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemMediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| CTR NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| TWL NAND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| TWL Photo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenFlags ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Read&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Write&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Create&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&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;
| 0x1&lt;br /&gt;
| Is Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Hidden&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Read-Only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WriteOption ==&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;
| 0x1&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Update Time Stamp&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DirectoryEntry ==&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;
| 0x20C&lt;br /&gt;
| UTF-16 Entry Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20C&lt;br /&gt;
| 0xA&lt;br /&gt;
| 8.3 short filename name&lt;br /&gt;
|-&lt;br /&gt;
| 0x216&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8.3 short filename extension&lt;br /&gt;
|-&lt;br /&gt;
| 0x21A&lt;br /&gt;
| 0x1&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x21B&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x21C&lt;br /&gt;
| 0x4&lt;br /&gt;
| [[Filesystem_services#Attributes|Attributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x220&lt;br /&gt;
| 0x8&lt;br /&gt;
| Entry Size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ArchiveResource ==&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;
| Sector byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Cluster byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Partition capacity in clusters&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Available free space in clusters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProgramInfo ==&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;
| 0x8&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x7&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProductInfo ==&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;
| 0x10&lt;br /&gt;
| Product Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Company Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| Remaster Version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IntegrityVerificationSeed ==&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;
|  0x10&lt;br /&gt;
|  AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x120&lt;br /&gt;
|  The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x8&lt;br /&gt;
| Save ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Save ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueSlot ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| SD Application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueEntry ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || When used as an input entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || This entry should be removed.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || This entry should be updated with the given value.&lt;br /&gt;
|}&lt;br /&gt;
When returned from a command:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || No entry with the given slot and title ID was found, or: this entry is unused.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || The entry with the given slot and title ID was found, or: this entry is used.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || u64, Secure Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TitleTag ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Magic, &amp;lt;code&amp;gt;PREP&amp;lt;/code&amp;gt; (PREPurchase install)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || s32, Release date year&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1 || u8, Release date month&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || u8, Release date day&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x2 || u16, Country code&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || u32, Seed status (0: not downloaded yet, 1: last download attempt failed, 2: seed installed successfully)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || Result code from last seed installation attempt &lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || Support error code from last seed installation attempt&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || 0x68 || reserved padding (unused)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBaudRate ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 512KHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 4MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 16MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBusMode ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1-bit&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 4-bit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SpecialContentType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
!  Found in&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| CTR (Old3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| Manual&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| DLP Child&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| KTR (New3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DeviceMoveContext ==&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;
|  0x10&lt;br /&gt;
|  IVs (ID0 of source console)&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x10&lt;br /&gt;
|  Encrypt Parameter (used to calculate the IV for encryption)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=System_SaveData&amp;diff=23614</id>
		<title>System SaveData</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=System_SaveData&amp;diff=23614"/>
		<updated>2025-07-01T20:18:48Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* System Module Savegames */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Savegames stored in NAND are located at [[Flash_Filesystem|nand:/data/&amp;lt;ID0&amp;gt;/sysdata/&amp;lt;SaveID-Low&amp;gt;/&amp;lt;SaveID-High&amp;gt;]], where SaveID-High is the filename. SaveID-High is normally 00000000.&lt;br /&gt;
&lt;br /&gt;
Access to system savedata via [[Filesystem_services|fs:USER]] is determined by the [[NCCH#CXI|exheader_storageinfo]] accessinfo and systemsavedataid. Most ARM11 processes using fs:USER only have access to the SaveIDs specified by systemsavedataid, when a certain accessinfo bit is set the process can access all system-savedata however. The 8-byte systemsavedataid is two SaveID-Low words which the process has access to, normally only the first word is used. When the process doesn&#039;t have access to any system-savedata via systemsavedataid, systemsavedataid is all-zero.&lt;br /&gt;
&lt;br /&gt;
=NAND Savegames=&lt;br /&gt;
The SaveID for system modules is usually 0x00010000 | [[Titles|uniqueID]]. The SaveID for other system processes (like applications) is 0x00020000 | [[Titles|uniqueID]].&lt;br /&gt;
&lt;br /&gt;
==System Module Savegames==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SaveID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001000F&lt;br /&gt;
| [[Filesystem_services|FS]] module savedata, used for [[Filesystem_services#SEEDDB|SEEDDB]] and [[Filesystem_services#TITLETAG_Database|TITLETAG]] storage.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010011&lt;br /&gt;
| [[Filesystem_services|FS]] module savedata, used for [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010015&lt;br /&gt;
| [[Application_Manager_Services|AM]] module savedata&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010017&lt;br /&gt;
| [[Config Savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010022&lt;br /&gt;
| [[PTM]] [[PTM_Savegame|savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010026&lt;br /&gt;
| [[StreetPass|CECD]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001002C&lt;br /&gt;
| [[NIM_Services|NIM]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010032&lt;br /&gt;
| [[FRD_Savegame|Friends module savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010034&lt;br /&gt;
| [[SpotPass|BOSS]] module [[BOSS Savegame|savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010035&lt;br /&gt;
| News module savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010038&lt;br /&gt;
| Act module savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| [[NFC_Services|NFC]] module savegame&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==System application and applet savegames==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! JPN SaveID&lt;br /&gt;
! USA SaveID&lt;br /&gt;
! EUR SaveID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C5&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| &amp;quot;error&amp;quot; applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| 0x0002008F&lt;br /&gt;
| 0x00020098&lt;br /&gt;
| [[Home Menu]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020086&lt;br /&gt;
| 0x00020092&lt;br /&gt;
| 0x0002009B&lt;br /&gt;
| Instruction Manual applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020087&lt;br /&gt;
| 0x00020093&lt;br /&gt;
| 0x0002009C&lt;br /&gt;
| Game Notes applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020088&lt;br /&gt;
| 0x00020094&lt;br /&gt;
| 0x0002009D&lt;br /&gt;
| Old3DS/New3DS [[Internet Browser]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002008D&lt;br /&gt;
| 0x00020096&lt;br /&gt;
| 0x0002009F&lt;br /&gt;
| Friend List applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200BB&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Additional savedata for the New3DS [[Internet Browser]]. This only contains &amp;quot;t.bin&amp;quot; with filesize 0xadf80. This contains all browser history: each entry has the URL, UTF-16 title string, and icon gfx. This includes old pages which are not currently open in the browser as tabs?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200BC&lt;br /&gt;
| 0x000200BD&lt;br /&gt;
| 0x000200BE&lt;br /&gt;
| olv applet savegame (Miiverse)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C6&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| mint applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020200&lt;br /&gt;
| 0x00020210&lt;br /&gt;
| 0x00020220&lt;br /&gt;
| [[System Settings]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020202&lt;br /&gt;
| 0x00020212&lt;br /&gt;
| 0x00020222&lt;br /&gt;
| [[Activity Log]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020204&lt;br /&gt;
| 0x00020214&lt;br /&gt;
| 0x00020224&lt;br /&gt;
| [[Nintendo 3DS Camera]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020205&lt;br /&gt;
| 0x00020215&lt;br /&gt;
| 0x00020225&lt;br /&gt;
| [[Nintendo 3DS Sound]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020207&lt;br /&gt;
| 0x00020217&lt;br /&gt;
| 0x00020227&lt;br /&gt;
| [[Mii Maker]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020208&lt;br /&gt;
| 0x00020218&lt;br /&gt;
| 0x00020228&lt;br /&gt;
| [[StreetPass Mii Plaza]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020209&lt;br /&gt;
| 0x00020219&lt;br /&gt;
| 0x00020229&lt;br /&gt;
| [[eShop]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020A&lt;br /&gt;
| 0x0002021A&lt;br /&gt;
| 0x0002022A&lt;br /&gt;
| [[System Transfer]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020B&lt;br /&gt;
| 0x0002021B&lt;br /&gt;
| 0x0002022B&lt;br /&gt;
| [[Nintendo Zone]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020D&lt;br /&gt;
| 0x0002021D&lt;br /&gt;
| 0x0002022D&lt;br /&gt;
| [[Face Raiders]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020E&lt;br /&gt;
| 0x0002021E&lt;br /&gt;
| 0x0002022E&lt;br /&gt;
| [[AR Games]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x000202BF&lt;br /&gt;
| 0x000202C0&lt;br /&gt;
| 0x000202C1&lt;br /&gt;
| act (NNID settings) application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020231&lt;br /&gt;
| 0x00020241&lt;br /&gt;
| 0x00020251&lt;br /&gt;
| [[microSD Management]] application savegame&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23613</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23613"/>
		<updated>2025-07-01T20:15:21Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Services =&lt;br /&gt;
{{Anchor|FS}}{{Anchor|FSUSER}}{{Anchor|fs:USER}}&lt;br /&gt;
== Filesystem service &amp;quot;fs:USER&amp;quot; ==&lt;br /&gt;
You can at most have 32 FS archive handles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Dummy1|Dummy1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Control|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;
| [[FS:RenameFile|RenameFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectory|DeleteDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectoryRecursively|DeleteDirectoryRecursively]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CreateFile|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;
| [[FS:RenameDirectory|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 ID code has separate access info bitmasks, if it has any&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ControlArchive|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;
| [[FS:Obsoleted_2_0_FormatThisUserSaveData|Obsoleted_2_0_FormatThisUserSaveData]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_CreateSystemSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSystemSaveData|Obsoleted_3_0_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;
| [[FS:GetFreeBytes|GetFreeBytes]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetCardType|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;
| 0x1007&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcFatfsError|GetSdmcFatfsError]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandCid|GetNandCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcSpeedInfo|GetSdmcSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandSpeedInfo|GetNandSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcLog|GetSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandLog|GetNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearSdmcLog|ClearSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearNandLog|ClearNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotIsInserted|CardSlotIsInserted]]&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOn|CardSlotPowerOn]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOff|CardSlotPowerOff]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotGetCardIFPowerStatus|CardSlotGetCardIFPowerStatus]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead_4xIO|CardNorDirectRead_4xIO]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCpuWriteWithoutVerify|CardNorDirectCpuWriteWithoutVerify]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectSectorEraseWithoutVerify|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;
| [[FS:Obsoleted_3_0_CreateExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_CreateSharedExtSaveData|Obsoleted_3_0_CreateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_ReadExtSaveDataIcon|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_EnumerateExtSaveData|Obsoleted_3_0_EnumerateExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_EnumerateSharedExtSaveData|Obsoleted_3_0_EnumerateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_DeleteExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSharedExtSaveData|Obsoleted_3_0_DeleteSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBaudRate|SetCardSpiBaudRate]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBusMode|SetCardSpiBusMode]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SendInitializeInfoTo9|SendInitializeInfoTo9]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialContentIndex|GetSpecialContentIndex]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader|GetLegacyRomHeader]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyBannerData|GetLegacyBannerData]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckAuthorityToAccessExtSaveData|CheckAuthorityToAccessExtSaveData]]&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:QueryTotalQuotaSize|QueryTotalQuotaSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_GetExtDataBlockSize|Obsoleted_3_0_GetExtDataBlockSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:AbnegateAccessRight|AbnegateAccessRight]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteAllExtSaveDataOnNand|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;
| [[FS:CreateSeed|CreateSeed]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetFormatInfo|GetFormatInfo]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader2|GetLegacyRomHeader2]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_2_0_FormatCtrCardUserSaveData|Obsoleted_2_0_FormatCtrCardUserSaveData]]&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetArchiveResource|GetArchiveResource]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:FormatSaveData|FormatSaveData]]&lt;br /&gt;
| 0x6, in some cases this write isn&#039;t needed however&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacySubBannerData|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;
| [[FS:ReadSpecialFile|ReadSpecialFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialFileSize|GetSpecialFileSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateExtSaveData|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;
| [[FS:DeleteExtSaveData|DeleteExtSaveData]]&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;
| [[FS:ReadExtSaveDataIcon|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;
| [[FS:GetExtDataBlockSize|GetExtDataBlockSize]]&lt;br /&gt;
| 0x10100D (this doesn&#039;t apply in certain cases, however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateExtSaveData|EnumerateExtSaveData]]&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560240&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateSystemSaveData|CreateSystemSaveData]]&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;
| [[FS:DeleteSystemSaveData|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:StartDeviceMoveAsSource|StartDeviceMoveAsSource]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:StartDeviceMoveAsDestination|StartDeviceMoveAsDestination]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetArchivePriority|SetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetArchivePriority|GetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetCtrCardLatencyParameter|SetCtrCardLatencyParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D01C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetFsCompatibilityInfo|SetFsCompatibilityInfo]]&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:ResetCardCompatibilityParameter|ResetCardCompatibilityParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SwitchCleanupInvalidSaveData|SwitchCleanupInvalidSaveData]]&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateSystemSaveData|EnumerateSystemSaveData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:InitializeWithSdkVersion|InitializeWithSdkVersion]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetPriority|SetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetPriority|GetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandInfo|Obsoleted_4_0_GetNandInfo]]&lt;br /&gt;
| Stubbed, this returns an error&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:SetSaveDataSecureValue|SetSaveDataSecureValue]]&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;
| [[FS:GetSaveDataSecureValue|GetSaveDataSecureValue]]&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;
| [[FS:ControlSecureSave|ControlSecureSave]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:GetMediaType|GetMediaType]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandEraseCount|Obsoleted_4_0_GetNandEraseCount]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:ReadNandReport|ReadNandReport]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetOtherSaveDataSecureValue|SetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetOtherSaveDataSecureValue|GetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:BeginSaveDataMove|BeginSaveDataMove]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetThisSaveDataSecureValue|SetThisSaveDataSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetThisSaveDataSecureValue|GetThisSaveDataSecureValue]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckArchive|CheckArchive]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710140&lt;br /&gt;
| ?&lt;br /&gt;
| [[FS:TransferSaveDataCMAC|TransferSaveDataCMAC]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08720200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterTitleContentOverlay|RegisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08730100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterTitleContentOverlay|UnregisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterAllTitleContentOverlays|UnregisterAllTitleContentOverlays]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetSaveArchiveSecureValue|SetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSaveArchiveSecureValue|GetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterSpecialTitleContent|RegisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08780100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterSpecialTitleContent|UnregisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087900C2&lt;br /&gt;
| ?&lt;br /&gt;
| Same as [[FS:GetLegacyBannerData|GetLegacyBannerData]], except for the last parameter this internally passes u8 value 0x1 instead of 0x0, for the FSPXI command.&lt;br /&gt;
| 0x101015&lt;br /&gt;
|-&lt;br /&gt;
| 0x087A0180&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddSeed|AddSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087B0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetSeed|GetSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087C0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteSeed|DeleteSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087D0000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumSeeds|GetNumSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087E0042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListSeeds|ListSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087F0100&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:TitleContentHasSeed|TitleContentHasSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08800880&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddTitleTag|AddTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08810080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetTitleTag|GetTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08820080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteTitleTag|DeleteTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08830000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumTitleTags|GetNumTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08840042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListTitleTags|ListTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088500C0&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:CheckTitleSeed|CheckTitleSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088600C0&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| [[FS:CheckUpdatedDat|CheckUpdatedDat]]&lt;br /&gt;
| 0x80000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The question marks from Dummy1 to GetSpecialFileSize on the &amp;quot;available since system version&amp;quot; field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process access info 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 access info field is all zero&#039;s 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&#039;s 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;
{{Anchor|FSLDR}}{{Anchor|fs:LDR}}&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;
{{Anchor|FSReg}}{{Anchor|FSREG}}{{Anchor|fs:REG}}&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;
| [[FSReg:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| [[FSReg:Register|Register]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| [[FSReg:Unregister|Unregister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| [[FSReg:GetProgramInfo|GetProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| [[FSReg:LoadProgram|LoadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| [[FSReg:UnloadProgram|UnloadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| [[FSReg:CheckHostLoadId|CheckHostLoadId]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Only two sessions can be opened for this service at a time, hence no other processes can use this due to [[Process_Manager_Services|pm-module]] and [[Loader_Services|loader]] using this.&lt;br /&gt;
&lt;br /&gt;
=File and directory access=&lt;br /&gt;
==Files==&lt;br /&gt;
File session handles obtained via [[FS:OpenFile]] and [[FS:OpenFileDirectly]] can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. To use this service-like interface, simply call the SendSyncRequest SVC with a file session handle, using the IPC buffer in thread-local storage for parameters and responses, just like you would with a proper service.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[FSFile:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[FSFile:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| [[FSFile:OpenSubFile|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;
| [[FSFile:GetAttributes|GetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| [[FSFile:SetAttributes|SetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| [[FSFile:Flush|Flush]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| [[FSFile:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| [[FSFile:GetPriority|GetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| [[FSFile:OpenLinkFile|OpenLinkFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C010100&lt;br /&gt;
| [[FSFile:GetAvailable|GetAvailable]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
Directory session handles obtained via [[FS:OpenDirectory]] are usable via a service-like interface, following the exact same procedure described above for file sessions.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030040&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:GetPriority|GetPriority]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Archives =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ArchiveId&lt;br /&gt;
!  Description&lt;br /&gt;
!  Accessible via [[Filesystem_services|FS]]&lt;br /&gt;
!  Accessible via [[Filesystem_services_PXI|FSPXI]]&lt;br /&gt;
!  Only accessible by Process9 internally&lt;br /&gt;
!  Requires binary [[FS:OpenFile|Lowpath]]&lt;br /&gt;
!  Required exheader FS access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000003&lt;br /&gt;
| SelfNCCH (including [[#RomFS|RomFS]])&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004&lt;br /&gt;
| SaveData (the saveID/mediatype for this is loaded from data originally from the user process&#039; exheader)&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000006&lt;br /&gt;
| ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x100D, when the input extdataID isn&#039;t listed in the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000007&lt;br /&gt;
| Shared ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000008&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x4, when the input saveID doesn&#039;t match the exheader system-saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000009&lt;br /&gt;
| SDMC&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000000A&lt;br /&gt;
| SDMC Write-Only&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x808E&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345678&lt;br /&gt;
| ExtSaveData for BOSS&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345679&lt;br /&gt;
| CARD SPI FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x16&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567B&lt;br /&gt;
| ExtSaveData, and ExtSaveData for BOSS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567C&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567D&lt;br /&gt;
| NAND RW&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x800&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567E&lt;br /&gt;
| NAND RO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x200&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567F&lt;br /&gt;
| NAND RO Write FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345680&lt;br /&gt;
| Extdata transfer. Used for transferring [[Extdata#NAND_Shared_Extdata|NAND Shared Extdata]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345681&lt;br /&gt;
| System Savedata transfer. Used for transferring [[System_SaveData|System Save Data]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345682&lt;br /&gt;
| Unknown. There&#039;s code for this in spider v9.9, but that code isn&#039;t actually used.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678A&lt;br /&gt;
| Title access. With FS, this allows accessing NCCH/NCSD contents (ExeFS, RomFS, checking if a content uses a seed, checking the validity of the installed seed). FSPXI, additionally, allows opening raw NCCH/NCSD NCCH contents and DSiWare contents for reading, along with encrypted save data.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678B&lt;br /&gt;
| Used internally by Process9 as the lowest level title access archive. Allows for opening various sections of a title (TMD, CMD, raw contents, DLC contents, raw save data (including public/private/banner saves for DSiWare), title and/or content import context files and /data directories for save data.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678C&lt;br /&gt;
| Used internally to access [[Title_Database|Title Database (/dbs)]] files. For SD, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;. For NAND, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_t.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_i.db&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;jumpid.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678D&lt;br /&gt;
| Used internally to access non-title /dbs files on the NAND: &amp;lt;code&amp;gt;certs.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ticket.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678E&lt;br /&gt;
| FSPXI: Program Access (limited subset of merged main title + update/patch title access). For fs:LDR(used by the &amp;quot;loader&amp;quot; FIRM ARM11-process), only &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;. Not accessible with fs:USER.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None, see description.&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AB&lt;br /&gt;
| NAND CTR FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AC&lt;br /&gt;
| TWL PHOTO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AD&lt;br /&gt;
| TWLS (DSi Sound stores recordings here). This is mapped to the FAT12 image stored in the file at [[Twln/shared2/0000]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AE&lt;br /&gt;
| NAND TWL FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AF&lt;br /&gt;
| NAND W FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B0&lt;br /&gt;
| Internally creates the same &amp;quot;ID Storage&amp;quot; wrapper over the NAND that is used for SystemSaveData and Shared ExtData, but all operations are stubbed and return 0xE0C046F8.&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B1&lt;br /&gt;
| Gamecard SaveData (for check). This is a wrapper for UserSaveDataForCheck: the OpenArchive code for that is called with archive-lowpath TID=0/mediatype=2(gamecard).&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B2&lt;br /&gt;
| UserSaveData (for check). This is the same as the regular SaveData archive, except with this the savedata ID and mediatype is loaded from the input archive lowpath.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B3&lt;br /&gt;
| [[3DS_Virtual_Console#NAND_Savegame|AGB Save Data]]&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B4&lt;br /&gt;
| Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]?&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Archives listed as not requiring a binary lowpath, use lowpath type [[FS:OpenFile|empty]].&lt;br /&gt;
&lt;br /&gt;
The above permission bitmasks are from v2.x, see the above Services section for how these are handled.&lt;br /&gt;
&lt;br /&gt;
Archives CTR NAND, NAND RO Write FS, TWL NAND, NAND W FS, and CARD SPI FS require the corresponding process exheader access control mount flag to be set, in the exheader for any of the currently running ARM11 processes, for [[Filesystem_services_PXI|FSPXI]]. The access rights checked by [[Filesystem services|FS]] module for archive mounting with fs:USER, are stored in the process&#039; exheader accessinfo.&lt;br /&gt;
&lt;br /&gt;
The CARDSPI archive allows access to the gamecard CARD1 raw savedata flash(aka &amp;quot;cardspi:/&amp;quot; in [[FIRM|Process9]]), the file lowpath must be WCHAR &amp;quot;/&amp;quot;. The &amp;quot;NAND W FS&amp;quot; archive allows access to the raw NAND image(aka &amp;quot;wnand:/&amp;quot; in Process9), the file lowpath must be WCHAR &amp;quot;/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Filenames and Paths =&lt;br /&gt;
{{Anchor|PathType}} PathType:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Returned internally by Process9, when errors occur it seems(in particular when no nul-terminator was found in the input path). The data ptr is set to NULL.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| INVALID - Specifies an invalid path&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| EMPTY - Specifies an empty path&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| BINARY - Non-text based path. Meaning is per-archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each (signed char)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| UTF16 - Text-based path with UTF-16 characters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In IPC requests, sizes of ASCII and UTF16 paths must include space for the null-terminator. &lt;br /&gt;
&lt;br /&gt;
== Binary LowPath ==&lt;br /&gt;
The format of the data that a binary LowPath points to is custom per archive.&lt;br /&gt;
&lt;br /&gt;
=== SystemSaveData / Extdata / Shared Extdata Archive Path Data Format ===&lt;br /&gt;
&lt;br /&gt;
==== DataAccessPath ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8 [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x1 || only for NAND data (System Savedata / Shared Extdata), otherwise left 0:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 of current system&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Accesses from/to &amp;lt;code&amp;gt;nand:/fixdata&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 from [[Filesystem_services#DeviceMoveContext|Device Move Context]]&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SystemSaveData ====&lt;br /&gt;
&lt;br /&gt;
===== FS =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| save ID low (save ID high is 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===== FSPXI / FS System Savedata Transfer / FSPXI System Savedata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Index word !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 1 || save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Extdata / Shared Extdata ====&lt;br /&gt;
&lt;br /&gt;
===== FS / FS Extdata Transfer / FSPXI Extdata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ext save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ext save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This refers to the extdata filesystem structure&#039;s base directory at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;ext save ID low&amp;gt;/&amp;lt;ext save ID high&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
For FS Extdata, this would acccess &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;directory ID&amp;gt;/&amp;lt;file ID&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;file ID&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
For FS / FSPXI Extdata Transfer, this accesses &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== UserSaveDataForCheck Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]] (must be non-zero)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Lower word saveid&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Upper word saveid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem.&lt;br /&gt;
&lt;br /&gt;
=== 0x567890B4 Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Lower_word_saveid &amp;gt;&amp;gt; 8&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown. Game calculate this using formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0xFFFFFF00 | unknown_b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Title Access Archive Path Data Format ===&lt;br /&gt;
==== Title Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || High-level NCCH content access&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Save data access (high-level, decrypted)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw content (low-level NCCH/SRL) access&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Banner save data access (for DSiWare titles)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FS only: Save data transfer (internally uses generated data from [[FS:BeginSaveDataMove]] as the IV for &amp;quot;Save data access (low-level, encrypted)&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Save data access (low-level, encrypted)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || NCCH Header(s)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;quot;is seeded&amp;quot; check&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seed verify/validate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Header Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[NCCH/Extended_Header|Extheader]] (0x0-0x400)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[NCCH/Extended_Header|Extheader]] AccessDesc (0x400-0x800)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw [[NCCH#NCCH_Header|NCCH Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || Program ID (Title ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0xB || 0x1 || [[Mediatypes|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Title_Access_Type|Title Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x10 || Dynamic data depending on [[Filesystem_services#Title_Access_Type|Title Access Type]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! High Level NCCH Access !! Save Data Access (high level) !! Raw Content !! FS only: Save Data Transfer&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Dynamic data depending on [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]:&lt;br /&gt;
For ExeFS, (System Menu Data / &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-byte ExeFS file name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For Header Access,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Filesystem_services#NCCH_Header_Access_Type|u64, NCCH Header Access Type]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RomFS,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[NCCH#Content_Types|u64, Allowed content types flag]]&lt;br /&gt;
(&amp;lt;code&amp;gt;(1 &amp;lt;&amp;lt; allowed_type_a) |&lt;br /&gt;
&lt;br /&gt;
(1 &amp;lt;&amp;lt; allowed_type_b)...&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x10 || 16-byte IV for save data crypto&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Save data transfer key from [[FS:BeginSaveDataMove]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x10 || 16-byte seed for titles that require one, or for validating a seed against the check value in the [[NCCH#NCCH_Header|NCCH Header]]&#039;s check value.&lt;br /&gt;
If the title does not use a seed, this should not be included and size 0x14 should be used instead of 0x24.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For encrypted save data access and banner save data access, the entire 0x10 portion of the dynamic data is left blank.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;is seeded check&amp;quot; NCCH access type opens a virtual 1-byte file that reads either 0 or 1; this value is generated on-the-fly and will be 1 if ncchflags[7] has bit5 set (content uses seed), and 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
For NCCH sections that require a seed (e.g. &amp;lt;code&amp;gt;.code&amp;lt;/code&amp;gt;, RomFS, etc.), the additional seed portion of the low path must be populated with the correct seed. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Seed Verify/Validate&amp;quot; NCCH access type also requires the seed portion of the lowpath. The target NCCH content is opened (with the opened file interface being stubbed, meaning no real reads/writes can be performed on it), and the given seed is used to calculate the seed check hash, and part of it is compared to the check value in the NCCH header. If it matches, opening the &amp;quot;file&amp;quot; succeeds, otherwise 0xD900458C is returned. If attempt is made to use the seed validation type on a content that does not use a seed, error 0xC92044E6 is returned.&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
For FS, this archive functions the same, except for the following limitations:&lt;br /&gt;
&lt;br /&gt;
- Only the title access types &amp;quot;High Level NCCH Access&amp;quot; and &amp;quot;High Level Save Data Access&amp;quot;, and &amp;quot;Save Data Transfer&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For high level NCCH access, the types &amp;quot;RomFS&amp;quot;, &amp;quot;System Menu Data&amp;quot;, &amp;quot;Seeded check&amp;quot;, and &amp;quot;Seed Check/Verify&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For &amp;quot;Seed Check/Verify&amp;quot;, rather than providing the title seed in the file path (as is the case for FSPXI), the seed is retrieved from the seed database (meaning the file lowpath size is always 0x14 for FS).&lt;br /&gt;
&lt;br /&gt;
=== Program Access / SelfNCCH access ===&lt;br /&gt;
&lt;br /&gt;
Provides access to a &amp;quot;merged&amp;quot; archive of a base title and, optionally, a separate update (patch) title.&lt;br /&gt;
&lt;br /&gt;
If no patch title exists, the base title is considered to be the patch title, i.e. turning all &amp;quot;patch&amp;quot; accesses into accesses to the base title.&lt;br /&gt;
&lt;br /&gt;
==== Program Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description !! Accesses&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt; || Patch title&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Save Data (high level, decrypted) || -&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RomFS (all [[NCCH#Content_Type|content types]]) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Patch title&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Program Handle from [[PXIPM:RegisterProgram]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Program_Access_Type|Program Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || Dynamic data depending on [[Filesystem_services#Program_Access_Type|Program Access Type]]:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ExeFS files (System Menu Data, etc.) !! RomFS of base title (all [[NCCH#Content_Type|content types]])&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-character ExeFS filename&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, content index of target content&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
- FSPXI allows all access types.&lt;br /&gt;
&lt;br /&gt;
- When used through fs:LDR by loader, FS only provides access to &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
- For SelfNCCH access, the only allowed access types are &amp;quot;RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default)&amp;quot; of the Base or Patch title, and &amp;quot;System Menu Data&amp;quot;. Attempting to access &amp;quot;Save Data&amp;quot; results in error 0xE0E046BE, &amp;quot;RomFS (all [[NCCH#Content_Type|content types]])&amp;quot; in 0xF9604784, and &amp;quot;&amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&amp;quot; in 0xD9004676.&lt;br /&gt;
&lt;br /&gt;
=== [[RomFS]] ===&lt;br /&gt;
&lt;br /&gt;
Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself.&lt;br /&gt;
&lt;br /&gt;
With FSPXI the returned data for RomFS is the entire RomFS section from the NCCH, starting at the IVFC header.&lt;br /&gt;
&lt;br /&gt;
The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath:&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;
| See above. The only values which FS-module doesn&#039;t allow to be used here are:&lt;br /&gt;
* 0x1: Error 0xE0E046BE.&lt;br /&gt;
* 0x3: Error 0xE0E046BE.&lt;br /&gt;
* 0x4: FS-module executes svcBreak when using this.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| See above. Not validated by FS-module.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Anti Savegame Restore=&lt;br /&gt;
Anti Savegame Restore, internally referred to as &#039;&#039;Save Data Rollback Prevention&#039;&#039;, is a feature originally implemented in the FS module with [[4.0.0-7]], which prevents the user from restoring previous versions of a savegame image. This feature is not used (in practice) for gamecard games. When an old version of the save is detected, the application will display an error regarding old savegame version, then delete and recreate the save data (similar to when it is corrupted).&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
When creating the savedata, the application generates a secure value (a 64 bit unsigned integer), then stores it in either the [[DISA_and_DIFF#DISA_header|DISA save image header]] or the [[Filesystem_services#Anti_Savegame_Restore_Save_Data|Anti Savegame Restore Save Data]]. The application then uses the anti-savegame-restore commands ([[FS:SetSaveDataSecureValue]], [[FS:GetSaveDataSecureValue]], [[FS:SetOtherSaveDataSecureValue]], [[FS:GetOtherSaveDataSecureValue]], [[FS:SetThisSaveDataSecureValue]], [[FS:GetThisSaveDataSecureValue]], [[FS:SetSaveArchiveSecureValue]] and [[FS:GetSaveArchiveSecureValue]]) to verify the value known to the game for comparison with the value returned by FS, and to update the value in the corresponding storage location.&lt;br /&gt;
&lt;br /&gt;
Each time the application writes to the savegame, the value should be updated by both the application and through FS. Usually, applications update this value by incrementing it. However, generating a new random-number or other methods of updating it can be used as well.&lt;br /&gt;
&lt;br /&gt;
==Anti Savegame Restore Save Data==&lt;br /&gt;
The save data used for this feature is stored in [[System_SaveData|System Save Data]] ID 0x00010011 and contains only one file, named &amp;lt;code&amp;gt;DB&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
===Main Structure===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of secure value entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x1C000 (8 * 14336) || [[Filesystem_services#SecureValueKey|Secure value keys]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D000 || 0x1C000 (8 * 14336) || u64s, Secure values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SecureValueKey===&lt;br /&gt;
Depending on which command is used, secure value keys can be interpreted as:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Title ID&lt;br /&gt;
|}&lt;br /&gt;
or:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, Unique ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Applications using this feature==&lt;br /&gt;
* Animal Crossing: New Leaf&lt;br /&gt;
* Pokemon X &amp;amp; Y&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire Demo &lt;br /&gt;
* Pokemon Shuffle&lt;br /&gt;
* Super Smash Bros&lt;br /&gt;
* Pokemon Red,Blue and Yellow (GB(C) VC)&lt;br /&gt;
* Rusty&#039;s Real Deal Baseball&lt;br /&gt;
* Megami Meguri&lt;br /&gt;
&lt;br /&gt;
=SEEDDB and TITLETAG=&lt;br /&gt;
With [[9.6.0-24|9.6.0-X]] new [[System_SaveData]] with save ID 0x0001000F was added. This save data contains both the NCCH seed database (SEEDDB) and the title tag database (TITLETAG).&lt;br /&gt;
&lt;br /&gt;
These databases are managed by the commands [[FS:AddSeed]], [[FS:GetSeed]], [[FS:DeleteSeed]], [[FS:GetNumSeeds]] and [[FS:ListSeeds]] for SEEDDB, and [[FS:AddTitleTag]], [[FS:GetTitleTag]], [[FS:DeleteTitleTag]], [[FS:GetNumTitleTags]], and [[FS:ListTitleTags]] for TITLETAG respectively.&lt;br /&gt;
&lt;br /&gt;
Both the [[Home_Menu|HOME Menu]] and the [[NIM_Services|NIM]] module have access to these commands.&lt;br /&gt;
&lt;br /&gt;
==SEEDDB==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;SEEDDB&amp;lt;/code&amp;gt;, it contains the title-unique seed-data used for the new [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of seed data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of seed entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x7D00 (16 * 2000) || Seed data, 16 bytes per seed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TITLETAG Database==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;TITLETAG&amp;lt;/code&amp;gt;, it contains information used by the [[Home_Menu|HOME Menu]] to handle cases when a to-be-released title has been purchased already, that is, to properly install the seed required for [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
When a to-be-released title is purchased, the [[NIM_Services|NIM]] module installs a [[Filesystem_services#TitleTag|title tag]] with enough information about the title for the [[Home_Menu|HOME Menu]] to be able to initiate a seed import once the title has been released (and thus, the title&#039;s NCCH content lock seed). Until the title&#039;s seed is released, and while the title tag remains in the database, the HOME Menu will prevent the user from launching the software as it would not run without the seed. Once released, information from the title tag is used to download the seed, and, if successful, the title tag is removed from the database, making the software playable.&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of title tag data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x3E800 (0x80 * 2000) || [[Filesystem_services#TitleTag|Title Tag]] data, 0x80 bytes per entry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Common Types =&lt;br /&gt;
== MediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Game Card&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemMediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| CTR NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| TWL NAND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| TWL Photo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenFlags ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Read&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Write&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Create&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&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;
| 0x1&lt;br /&gt;
| Is Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Hidden&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Read-Only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WriteOption ==&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;
| 0x1&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Update Time Stamp&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DirectoryEntry ==&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;
| 0x20C&lt;br /&gt;
| UTF-16 Entry Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20C&lt;br /&gt;
| 0xA&lt;br /&gt;
| 8.3 short filename name&lt;br /&gt;
|-&lt;br /&gt;
| 0x216&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8.3 short filename extension&lt;br /&gt;
|-&lt;br /&gt;
| 0x21A&lt;br /&gt;
| 0x1&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x21B&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x21C&lt;br /&gt;
| 0x4&lt;br /&gt;
| [[Filesystem_services#Attributes|Attributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x220&lt;br /&gt;
| 0x8&lt;br /&gt;
| Entry Size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ArchiveResource ==&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;
| Sector byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Cluster byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Partition capacity in clusters&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Available free space in clusters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProgramInfo ==&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;
| 0x8&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x7&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProductInfo ==&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;
| 0x10&lt;br /&gt;
| Product Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Company Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| Remaster Version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IntegrityVerificationSeed ==&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;
|  0x10&lt;br /&gt;
|  AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x120&lt;br /&gt;
|  The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x8&lt;br /&gt;
| Save ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Save ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueSlot ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| SD Application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueEntry ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || When used as an input entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || This entry should be removed.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || This entry should be updated with the given value.&lt;br /&gt;
|}&lt;br /&gt;
When returned from a command:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || No entry with the given slot and title ID was found, or: this entry is unused.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || The entry with the given slot and title ID was found, or: this entry is used.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || u64, Secure Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TitleTag ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Magic, &amp;lt;code&amp;gt;PREP&amp;lt;/code&amp;gt; (PREPurchase install)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || s32, Release date year&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1 || u8, Release date month&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || u8, Release date day&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x2 || u16, Country code&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || u32, Seed status (0: not downloaded yet, 1: last download attempt failed, 2: seed installed successfully)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || Result code from last seed installation attempt &lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || Support error code from last seed installation attempt&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || 0x68 || reserved padding (unused)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBaudRate ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 512KHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 4MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 16MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBusMode ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1-bit&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 4-bit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SpecialContentType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
!  Found in&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| CTR (Old3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| Manual&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| DLP Child&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| KTR (New3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DeviceMoveContext ==&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;
|  0x10&lt;br /&gt;
|  IVs (ID0 of source console)&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x10&lt;br /&gt;
|  Encrypt Parameter (used to calculate the IV for encryption)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23612</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23612"/>
		<updated>2025-07-01T20:14:06Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* Anti Savegame Restore Save Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Services =&lt;br /&gt;
{{Anchor|FS}}{{Anchor|FSUSER}}{{Anchor|fs:USER}}&lt;br /&gt;
== Filesystem service &amp;quot;fs:USER&amp;quot; ==&lt;br /&gt;
You can at most have 32 FS archive handles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Dummy1|Dummy1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Control|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;
| [[FS:RenameFile|RenameFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectory|DeleteDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectoryRecursively|DeleteDirectoryRecursively]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CreateFile|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;
| [[FS:RenameDirectory|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 ID code has separate access info bitmasks, if it has any&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ControlArchive|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;
| [[FS:Obsoleted_2_0_FormatThisUserSaveData|Obsoleted_2_0_FormatThisUserSaveData]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_CreateSystemSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSystemSaveData|Obsoleted_3_0_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;
| [[FS:GetFreeBytes|GetFreeBytes]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetCardType|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;
| 0x1007&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcFatfsError|GetSdmcFatfsError]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandCid|GetNandCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcSpeedInfo|GetSdmcSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandSpeedInfo|GetNandSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcLog|GetSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandLog|GetNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearSdmcLog|ClearSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearNandLog|ClearNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotIsInserted|CardSlotIsInserted]]&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOn|CardSlotPowerOn]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOff|CardSlotPowerOff]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotGetCardIFPowerStatus|CardSlotGetCardIFPowerStatus]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead_4xIO|CardNorDirectRead_4xIO]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCpuWriteWithoutVerify|CardNorDirectCpuWriteWithoutVerify]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectSectorEraseWithoutVerify|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;
| [[FS:Obsoleted_3_0_CreateExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_CreateSharedExtSaveData|Obsoleted_3_0_CreateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_ReadExtSaveDataIcon|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_EnumerateExtSaveData|Obsoleted_3_0_EnumerateExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_EnumerateSharedExtSaveData|Obsoleted_3_0_EnumerateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_DeleteExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSharedExtSaveData|Obsoleted_3_0_DeleteSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBaudRate|SetCardSpiBaudRate]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBusMode|SetCardSpiBusMode]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SendInitializeInfoTo9|SendInitializeInfoTo9]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialContentIndex|GetSpecialContentIndex]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader|GetLegacyRomHeader]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyBannerData|GetLegacyBannerData]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckAuthorityToAccessExtSaveData|CheckAuthorityToAccessExtSaveData]]&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:QueryTotalQuotaSize|QueryTotalQuotaSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_GetExtDataBlockSize|Obsoleted_3_0_GetExtDataBlockSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:AbnegateAccessRight|AbnegateAccessRight]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteAllExtSaveDataOnNand|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;
| [[FS:CreateSeed|CreateSeed]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetFormatInfo|GetFormatInfo]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader2|GetLegacyRomHeader2]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_2_0_FormatCtrCardUserSaveData|Obsoleted_2_0_FormatCtrCardUserSaveData]]&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetArchiveResource|GetArchiveResource]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:FormatSaveData|FormatSaveData]]&lt;br /&gt;
| 0x6, in some cases this write isn&#039;t needed however&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacySubBannerData|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;
| [[FS:ReadSpecialFile|ReadSpecialFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialFileSize|GetSpecialFileSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateExtSaveData|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;
| [[FS:DeleteExtSaveData|DeleteExtSaveData]]&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;
| [[FS:ReadExtSaveDataIcon|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;
| [[FS:GetExtDataBlockSize|GetExtDataBlockSize]]&lt;br /&gt;
| 0x10100D (this doesn&#039;t apply in certain cases, however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateExtSaveData|EnumerateExtSaveData]]&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560240&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateSystemSaveData|CreateSystemSaveData]]&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;
| [[FS:DeleteSystemSaveData|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:StartDeviceMoveAsSource|StartDeviceMoveAsSource]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:StartDeviceMoveAsDestination|StartDeviceMoveAsDestination]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetArchivePriority|SetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetArchivePriority|GetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetCtrCardLatencyParameter|SetCtrCardLatencyParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D01C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetFsCompatibilityInfo|SetFsCompatibilityInfo]]&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:ResetCardCompatibilityParameter|ResetCardCompatibilityParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SwitchCleanupInvalidSaveData|SwitchCleanupInvalidSaveData]]&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateSystemSaveData|EnumerateSystemSaveData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:InitializeWithSdkVersion|InitializeWithSdkVersion]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetPriority|SetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetPriority|GetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandInfo|Obsoleted_4_0_GetNandInfo]]&lt;br /&gt;
| Stubbed, this returns an error&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:SetSaveDataSecureValue|SetSaveDataSecureValue]]&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;
| [[FS:GetSaveDataSecureValue|GetSaveDataSecureValue]]&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;
| [[FS:ControlSecureSave|ControlSecureSave]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:GetMediaType|GetMediaType]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandEraseCount|Obsoleted_4_0_GetNandEraseCount]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:ReadNandReport|ReadNandReport]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetOtherSaveDataSecureValue|SetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetOtherSaveDataSecureValue|GetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:BeginSaveDataMove|BeginSaveDataMove]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetThisSaveDataSecureValue|SetThisSaveDataSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetThisSaveDataSecureValue|GetThisSaveDataSecureValue]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckArchive|CheckArchive]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710140&lt;br /&gt;
| ?&lt;br /&gt;
| [[FS:TransferSaveDataCMAC|TransferSaveDataCMAC]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08720200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterTitleContentOverlay|RegisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08730100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterTitleContentOverlay|UnregisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterAllTitleContentOverlays|UnregisterAllTitleContentOverlays]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetSaveArchiveSecureValue|SetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSaveArchiveSecureValue|GetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterSpecialTitleContent|RegisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08780100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterSpecialTitleContent|UnregisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087900C2&lt;br /&gt;
| ?&lt;br /&gt;
| Same as [[FS:GetLegacyBannerData|GetLegacyBannerData]], except for the last parameter this internally passes u8 value 0x1 instead of 0x0, for the FSPXI command.&lt;br /&gt;
| 0x101015&lt;br /&gt;
|-&lt;br /&gt;
| 0x087A0180&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddSeed|AddSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087B0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetSeed|GetSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087C0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteSeed|DeleteSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087D0000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumSeeds|GetNumSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087E0042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListSeeds|ListSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087F0100&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:TitleContentHasSeed|TitleContentHasSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08800880&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddTitleTag|AddTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08810080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetTitleTag|GetTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08820080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteTitleTag|DeleteTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08830000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumTitleTags|GetNumTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08840042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListTitleTags|ListTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088500C0&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:CheckTitleSeed|CheckTitleSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088600C0&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| [[FS:CheckUpdatedDat|CheckUpdatedDat]]&lt;br /&gt;
| 0x80000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The question marks from Dummy1 to GetSpecialFileSize on the &amp;quot;available since system version&amp;quot; field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process access info 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 access info field is all zero&#039;s 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&#039;s 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;
{{Anchor|FSLDR}}{{Anchor|fs:LDR}}&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;
{{Anchor|FSReg}}{{Anchor|FSREG}}{{Anchor|fs:REG}}&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;
| [[FSReg:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| [[FSReg:Register|Register]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| [[FSReg:Unregister|Unregister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| [[FSReg:GetProgramInfo|GetProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| [[FSReg:LoadProgram|LoadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| [[FSReg:UnloadProgram|UnloadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| [[FSReg:CheckHostLoadId|CheckHostLoadId]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Only two sessions can be opened for this service at a time, hence no other processes can use this due to [[Process_Manager_Services|pm-module]] and [[Loader_Services|loader]] using this.&lt;br /&gt;
&lt;br /&gt;
=File and directory access=&lt;br /&gt;
==Files==&lt;br /&gt;
File session handles obtained via [[FS:OpenFile]] and [[FS:OpenFileDirectly]] can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. To use this service-like interface, simply call the SendSyncRequest SVC with a file session handle, using the IPC buffer in thread-local storage for parameters and responses, just like you would with a proper service.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[FSFile:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[FSFile:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| [[FSFile:OpenSubFile|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;
| [[FSFile:GetAttributes|GetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| [[FSFile:SetAttributes|SetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| [[FSFile:Flush|Flush]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| [[FSFile:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| [[FSFile:GetPriority|GetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| [[FSFile:OpenLinkFile|OpenLinkFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C010100&lt;br /&gt;
| [[FSFile:GetAvailable|GetAvailable]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
Directory session handles obtained via [[FS:OpenDirectory]] are usable via a service-like interface, following the exact same procedure described above for file sessions.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030040&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:GetPriority|GetPriority]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Archives =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ArchiveId&lt;br /&gt;
!  Description&lt;br /&gt;
!  Accessible via [[Filesystem_services|FS]]&lt;br /&gt;
!  Accessible via [[Filesystem_services_PXI|FSPXI]]&lt;br /&gt;
!  Only accessible by Process9 internally&lt;br /&gt;
!  Requires binary [[FS:OpenFile|Lowpath]]&lt;br /&gt;
!  Required exheader FS access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000003&lt;br /&gt;
| SelfNCCH (including [[#RomFS|RomFS]])&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004&lt;br /&gt;
| SaveData (the saveID/mediatype for this is loaded from data originally from the user process&#039; exheader)&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000006&lt;br /&gt;
| ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x100D, when the input extdataID isn&#039;t listed in the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000007&lt;br /&gt;
| Shared ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000008&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x4, when the input saveID doesn&#039;t match the exheader system-saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000009&lt;br /&gt;
| SDMC&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000000A&lt;br /&gt;
| SDMC Write-Only&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x808E&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345678&lt;br /&gt;
| ExtSaveData for BOSS&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345679&lt;br /&gt;
| CARD SPI FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x16&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567B&lt;br /&gt;
| ExtSaveData, and ExtSaveData for BOSS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567C&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567D&lt;br /&gt;
| NAND RW&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x800&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567E&lt;br /&gt;
| NAND RO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x200&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567F&lt;br /&gt;
| NAND RO Write FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345680&lt;br /&gt;
| Extdata transfer. Used for transferring [[Extdata#NAND_Shared_Extdata|NAND Shared Extdata]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345681&lt;br /&gt;
| System Savedata transfer. Used for transferring [[System_SaveData|System Save Data]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345682&lt;br /&gt;
| Unknown. There&#039;s code for this in spider v9.9, but that code isn&#039;t actually used.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678A&lt;br /&gt;
| Title access. With FS, this allows accessing NCCH/NCSD contents (ExeFS, RomFS, checking if a content uses a seed, checking the validity of the installed seed). FSPXI, additionally, allows opening raw NCCH/NCSD NCCH contents and DSiWare contents for reading, along with encrypted save data.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678B&lt;br /&gt;
| Used internally by Process9 as the lowest level title access archive. Allows for opening various sections of a title (TMD, CMD, raw contents, DLC contents, raw save data (including public/private/banner saves for DSiWare), title and/or content import context files and /data directories for save data.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678C&lt;br /&gt;
| Used internally to access [[Title_Database|Title Database (/dbs)]] files. For SD, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;. For NAND, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_t.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_i.db&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;jumpid.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678D&lt;br /&gt;
| Used internally to access non-title /dbs files on the NAND: &amp;lt;code&amp;gt;certs.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ticket.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678E&lt;br /&gt;
| FSPXI: Program Access (limited subset of merged main title + update/patch title access). For fs:LDR(used by the &amp;quot;loader&amp;quot; FIRM ARM11-process), only &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;. Not accessible with fs:USER.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None, see description.&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AB&lt;br /&gt;
| NAND CTR FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AC&lt;br /&gt;
| TWL PHOTO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AD&lt;br /&gt;
| TWLS (DSi Sound stores recordings here). This is mapped to the FAT12 image stored in the file at [[Twln/shared2/0000]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AE&lt;br /&gt;
| NAND TWL FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AF&lt;br /&gt;
| NAND W FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B0&lt;br /&gt;
| Internally creates the same &amp;quot;ID Storage&amp;quot; wrapper over the NAND that is used for SystemSaveData and Shared ExtData, but all operations are stubbed and return 0xE0C046F8.&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B1&lt;br /&gt;
| Gamecard SaveData (for check). This is a wrapper for UserSaveDataForCheck: the OpenArchive code for that is called with archive-lowpath TID=0/mediatype=2(gamecard).&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B2&lt;br /&gt;
| UserSaveData (for check). This is the same as the regular SaveData archive, except with this the savedata ID and mediatype is loaded from the input archive lowpath.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B3&lt;br /&gt;
| [[3DS_Virtual_Console#NAND_Savegame|AGB Save Data]]&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B4&lt;br /&gt;
| Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]?&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Archives listed as not requiring a binary lowpath, use lowpath type [[FS:OpenFile|empty]].&lt;br /&gt;
&lt;br /&gt;
The above permission bitmasks are from v2.x, see the above Services section for how these are handled.&lt;br /&gt;
&lt;br /&gt;
Archives CTR NAND, NAND RO Write FS, TWL NAND, NAND W FS, and CARD SPI FS require the corresponding process exheader access control mount flag to be set, in the exheader for any of the currently running ARM11 processes, for [[Filesystem_services_PXI|FSPXI]]. The access rights checked by [[Filesystem services|FS]] module for archive mounting with fs:USER, are stored in the process&#039; exheader accessinfo.&lt;br /&gt;
&lt;br /&gt;
The CARDSPI archive allows access to the gamecard CARD1 raw savedata flash(aka &amp;quot;cardspi:/&amp;quot; in [[FIRM|Process9]]), the file lowpath must be WCHAR &amp;quot;/&amp;quot;. The &amp;quot;NAND W FS&amp;quot; archive allows access to the raw NAND image(aka &amp;quot;wnand:/&amp;quot; in Process9), the file lowpath must be WCHAR &amp;quot;/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Filenames and Paths =&lt;br /&gt;
{{Anchor|PathType}} PathType:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Returned internally by Process9, when errors occur it seems(in particular when no nul-terminator was found in the input path). The data ptr is set to NULL.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| INVALID - Specifies an invalid path&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| EMPTY - Specifies an empty path&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| BINARY - Non-text based path. Meaning is per-archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each (signed char)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| UTF16 - Text-based path with UTF-16 characters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In IPC requests, sizes of ASCII and UTF16 paths must include space for the null-terminator. &lt;br /&gt;
&lt;br /&gt;
== Binary LowPath ==&lt;br /&gt;
The format of the data that a binary LowPath points to is custom per archive.&lt;br /&gt;
&lt;br /&gt;
=== SystemSaveData / Extdata / Shared Extdata Archive Path Data Format ===&lt;br /&gt;
&lt;br /&gt;
==== DataAccessPath ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8 [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x1 || only for NAND data (System Savedata / Shared Extdata), otherwise left 0:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 of current system&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Accesses from/to &amp;lt;code&amp;gt;nand:/fixdata&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 from [[Filesystem_services#DeviceMoveContext|Device Move Context]]&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SystemSaveData ====&lt;br /&gt;
&lt;br /&gt;
===== FS =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| save ID low (save ID high is 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===== FSPXI / FS System Savedata Transfer / FSPXI System Savedata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Index word !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 1 || save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Extdata / Shared Extdata ====&lt;br /&gt;
&lt;br /&gt;
===== FS / FS Extdata Transfer / FSPXI Extdata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ext save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ext save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This refers to the extdata filesystem structure&#039;s base directory at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;ext save ID low&amp;gt;/&amp;lt;ext save ID high&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
For FS Extdata, this would acccess &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;directory ID&amp;gt;/&amp;lt;file ID&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;file ID&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
For FS / FSPXI Extdata Transfer, this accesses &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== UserSaveDataForCheck Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]] (must be non-zero)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Lower word saveid&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Upper word saveid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem.&lt;br /&gt;
&lt;br /&gt;
=== 0x567890B4 Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Lower_word_saveid &amp;gt;&amp;gt; 8&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown. Game calculate this using formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0xFFFFFF00 | unknown_b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Title Access Archive Path Data Format ===&lt;br /&gt;
==== Title Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || High-level NCCH content access&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Save data access (high-level, decrypted)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw content (low-level NCCH/SRL) access&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Banner save data access (for DSiWare titles)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FS only: Save data transfer (internally uses generated data from [[FS:BeginSaveDataMove]] as the IV for &amp;quot;Save data access (low-level, encrypted)&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Save data access (low-level, encrypted)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || NCCH Header(s)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;quot;is seeded&amp;quot; check&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seed verify/validate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Header Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[NCCH/Extended_Header|Extheader]] (0x0-0x400)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[NCCH/Extended_Header|Extheader]] AccessDesc (0x400-0x800)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw [[NCCH#NCCH_Header|NCCH Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || Program ID (Title ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0xB || 0x1 || [[Mediatypes|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Title_Access_Type|Title Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x10 || Dynamic data depending on [[Filesystem_services#Title_Access_Type|Title Access Type]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! High Level NCCH Access !! Save Data Access (high level) !! Raw Content !! FS only: Save Data Transfer&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Dynamic data depending on [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]:&lt;br /&gt;
For ExeFS, (System Menu Data / &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-byte ExeFS file name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For Header Access,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Filesystem_services#NCCH_Header_Access_Type|u64, NCCH Header Access Type]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RomFS,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[NCCH#Content_Types|u64, Allowed content types flag]]&lt;br /&gt;
(&amp;lt;code&amp;gt;(1 &amp;lt;&amp;lt; allowed_type_a) |&lt;br /&gt;
&lt;br /&gt;
(1 &amp;lt;&amp;lt; allowed_type_b)...&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x10 || 16-byte IV for save data crypto&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Save data transfer key from [[FS:BeginSaveDataMove]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x10 || 16-byte seed for titles that require one, or for validating a seed against the check value in the [[NCCH#NCCH_Header|NCCH Header]]&#039;s check value.&lt;br /&gt;
If the title does not use a seed, this should not be included and size 0x14 should be used instead of 0x24.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For encrypted save data access and banner save data access, the entire 0x10 portion of the dynamic data is left blank.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;is seeded check&amp;quot; NCCH access type opens a virtual 1-byte file that reads either 0 or 1; this value is generated on-the-fly and will be 1 if ncchflags[7] has bit5 set (content uses seed), and 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
For NCCH sections that require a seed (e.g. &amp;lt;code&amp;gt;.code&amp;lt;/code&amp;gt;, RomFS, etc.), the additional seed portion of the low path must be populated with the correct seed. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Seed Verify/Validate&amp;quot; NCCH access type also requires the seed portion of the lowpath. The target NCCH content is opened (with the opened file interface being stubbed, meaning no real reads/writes can be performed on it), and the given seed is used to calculate the seed check hash, and part of it is compared to the check value in the NCCH header. If it matches, opening the &amp;quot;file&amp;quot; succeeds, otherwise 0xD900458C is returned. If attempt is made to use the seed validation type on a content that does not use a seed, error 0xC92044E6 is returned.&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
For FS, this archive functions the same, except for the following limitations:&lt;br /&gt;
&lt;br /&gt;
- Only the title access types &amp;quot;High Level NCCH Access&amp;quot; and &amp;quot;High Level Save Data Access&amp;quot;, and &amp;quot;Save Data Transfer&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For high level NCCH access, the types &amp;quot;RomFS&amp;quot;, &amp;quot;System Menu Data&amp;quot;, &amp;quot;Seeded check&amp;quot;, and &amp;quot;Seed Check/Verify&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For &amp;quot;Seed Check/Verify&amp;quot;, rather than providing the title seed in the file path (as is the case for FSPXI), the seed is retrieved from the seed database (meaning the file lowpath size is always 0x14 for FS).&lt;br /&gt;
&lt;br /&gt;
=== Program Access / SelfNCCH access ===&lt;br /&gt;
&lt;br /&gt;
Provides access to a &amp;quot;merged&amp;quot; archive of a base title and, optionally, a separate update (patch) title.&lt;br /&gt;
&lt;br /&gt;
If no patch title exists, the base title is considered to be the patch title, i.e. turning all &amp;quot;patch&amp;quot; accesses into accesses to the base title.&lt;br /&gt;
&lt;br /&gt;
==== Program Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description !! Accesses&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt; || Patch title&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Save Data (high level, decrypted) || -&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RomFS (all [[NCCH#Content_Type|content types]]) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Patch title&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Program Handle from [[PXIPM:RegisterProgram]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Program_Access_Type|Program Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || Dynamic data depending on [[Filesystem_services#Program_Access_Type|Program Access Type]]:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ExeFS files (System Menu Data, etc.) !! RomFS of base title (all [[NCCH#Content_Type|content types]])&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-character ExeFS filename&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, content index of target content&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
- FSPXI allows all access types.&lt;br /&gt;
&lt;br /&gt;
- When used through fs:LDR by loader, FS only provides access to &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
- For SelfNCCH access, the only allowed access types are &amp;quot;RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default)&amp;quot; of the Base or Patch title, and &amp;quot;System Menu Data&amp;quot;. Attempting to access &amp;quot;Save Data&amp;quot; results in error 0xE0E046BE, &amp;quot;RomFS (all [[NCCH#Content_Type|content types]])&amp;quot; in 0xF9604784, and &amp;quot;&amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&amp;quot; in 0xD9004676.&lt;br /&gt;
&lt;br /&gt;
=== [[RomFS]] ===&lt;br /&gt;
&lt;br /&gt;
Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself.&lt;br /&gt;
&lt;br /&gt;
With FSPXI the returned data for RomFS is the entire RomFS section from the NCCH, starting at the IVFC header.&lt;br /&gt;
&lt;br /&gt;
The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath:&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;
| See above. The only values which FS-module doesn&#039;t allow to be used here are:&lt;br /&gt;
* 0x1: Error 0xE0E046BE.&lt;br /&gt;
* 0x3: Error 0xE0E046BE.&lt;br /&gt;
* 0x4: FS-module executes svcBreak when using this.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| See above. Not validated by FS-module.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Anti Savegame Restore=&lt;br /&gt;
Anti Savegame Restore, internally referred to as &#039;&#039;Save Data Rollback Prevention&#039;&#039;, is a feature originally implemented in the FS module with [[4.0.0-7]], which prevents the user from restoring previous versions of a savegame image. This feature is not used (in practice) for gamecard games. When an old version of the save is detected, the application will display an error regarding old savegame version, then delete and recreate the save data (similar to when it is corrupted).&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
When creating the savedata, the application generates a secure value (a 64 bit unsigned integer), then stores it in either the [[DISA_and_DIFF#DISA_header|DISA save image header]] or the [[Filesystem_services#Anti_Savegame_Restore_Save_Data|Anti Savegame Restore Save Data]]. The application then uses the anti-savegame-restore commands ([[FS:SetSaveDataSecureValue]], [[FS:GetSaveDataSecureValue]], [[FS:SetOtherSaveDataSecureValue]], [[FS:GetOtherSaveDataSecureValue]], [[FS:SetThisSaveDataSecureValue]], [[FS:GetThisSaveDataSecureValue]], [[FS:SetSaveArchiveSecureValue]] and [[FS:GetSaveArchiveSecureValue]]) to verify the value known to the game for comparison with the value returned by FS, and to update the value in the corresponding storage location.&lt;br /&gt;
&lt;br /&gt;
Each time the application writes to the savegame, the value should be updated by both the application and through FS. Usually, applications update this value by incrementing it. However, generating a new random-number or other methods of updating it can be used as well.&lt;br /&gt;
&lt;br /&gt;
==Anti Savegame Restore Save Data==&lt;br /&gt;
The save data used for this feature is stored in [[System_SaveData|System Save Data]] ID 0x00010011 and contains only one file, named &amp;lt;code&amp;gt;DB&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
===Main Structure===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of secure value entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x1C000 (8 * 14336) || [[Filesystem_services#SecureValueKey|Secure value keys]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D000 || 0x1C000 (8 * 14336) || u64s, Secure values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SecureValueKey===&lt;br /&gt;
Depending on which command is used, secure value keys can be interpreted as:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Title ID&lt;br /&gt;
|}&lt;br /&gt;
or:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, Unique ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Applications using this feature==&lt;br /&gt;
* Animal Crossing: New Leaf&lt;br /&gt;
* Pokemon X &amp;amp; Y&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire Demo &lt;br /&gt;
* Pokemon Shuffle&lt;br /&gt;
* Super Smash Bros&lt;br /&gt;
* Pokemon Red,Blue and Yellow (GB(C) VC)&lt;br /&gt;
* Rusty&#039;s Real Deal Baseball&lt;br /&gt;
* Megami Meguri&lt;br /&gt;
&lt;br /&gt;
=SEEDDB and TITLETAG=&lt;br /&gt;
With [[9.6.0-24|9.6.0-X]] new [[System_SaveData]] with save ID 0x0001000F was added. This save data contains both the NCCH seed database (SEEDDB) and the title tag database (TITLETAG).&lt;br /&gt;
&lt;br /&gt;
These databases are managed by the commands [[FS:AddSeed]], [[FS:GetSeed]], [[FS:DeleteSeed]], [[FS:GetNumSeeds]] and [[FS:ListSeeds]] for SEEDDB, and [[FS:AddTitleTag]], [[FS:GetTitleTag]], [[FS:DeleteTitleTag]], [[FS:GetNumTitleTags]], and [[FS:ListTitleTags]] for TITLETAG respectively.&lt;br /&gt;
&lt;br /&gt;
Both the [[Home_Menu|HOME Menu]] and the [[NIM_Services|NIM]] module have access to these commands.&lt;br /&gt;
&lt;br /&gt;
==SEEDDB==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;SEEDDB&amp;lt;/code&amp;gt;, it contains the title-unique seed-data used for the new [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of seed data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of seed entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x7D00 (16 * 2000) || Seed data, 16 bytes per seed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TITLETAG==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;TITLETAG&amp;lt;/code&amp;gt;, it contains information used by the [[Home_Menu|HOME Menu]] to handle cases when a to-be-released title has been purchased already, that is, to properly install the seed required for [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
When a to-be-released title is purchased, the [[NIM_Services|NIM]] module installs a [[Filesystem_services#TitleTag|title tag]] with enough information about the title for the [[Home_Menu|HOME Menu]] to be able to initiate a seed import once the title has been released (and thus, the title&#039;s NCCH content lock seed). Until the title&#039;s seed is released, and while the title tag remains in the database, the HOME Menu will prevent the user from launching the software as it would not run without the seed. Once released, information from the title tag is used to download the seed, and, if successful, the title tag is removed from the database, making the software playable.&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of title tag data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x3E800 (0x80 * 2000) || [[Filesystem_services#TitleTag|Title Tag]] data, 0x80 bytes per entry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Common Types =&lt;br /&gt;
== MediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Game Card&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemMediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| CTR NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| TWL NAND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| TWL Photo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenFlags ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Read&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Write&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Create&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&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;
| 0x1&lt;br /&gt;
| Is Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Hidden&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Read-Only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WriteOption ==&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;
| 0x1&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Update Time Stamp&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DirectoryEntry ==&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;
| 0x20C&lt;br /&gt;
| UTF-16 Entry Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20C&lt;br /&gt;
| 0xA&lt;br /&gt;
| 8.3 short filename name&lt;br /&gt;
|-&lt;br /&gt;
| 0x216&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8.3 short filename extension&lt;br /&gt;
|-&lt;br /&gt;
| 0x21A&lt;br /&gt;
| 0x1&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x21B&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x21C&lt;br /&gt;
| 0x4&lt;br /&gt;
| [[Filesystem_services#Attributes|Attributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x220&lt;br /&gt;
| 0x8&lt;br /&gt;
| Entry Size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ArchiveResource ==&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;
| Sector byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Cluster byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Partition capacity in clusters&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Available free space in clusters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProgramInfo ==&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;
| 0x8&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x7&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProductInfo ==&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;
| 0x10&lt;br /&gt;
| Product Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Company Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| Remaster Version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IntegrityVerificationSeed ==&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;
|  0x10&lt;br /&gt;
|  AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x120&lt;br /&gt;
|  The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x8&lt;br /&gt;
| Save ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Save ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueSlot ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| SD Application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueEntry ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || When used as an input entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || This entry should be removed.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || This entry should be updated with the given value.&lt;br /&gt;
|}&lt;br /&gt;
When returned from a command:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || No entry with the given slot and title ID was found, or: this entry is unused.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || The entry with the given slot and title ID was found, or: this entry is used.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || u64, Secure Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TitleTag ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Magic, &amp;lt;code&amp;gt;PREP&amp;lt;/code&amp;gt; (PREPurchase install)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || s32, Release date year&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1 || u8, Release date month&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || u8, Release date day&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x2 || u16, Country code&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || u32, Seed status (0: not downloaded yet, 1: last download attempt failed, 2: seed installed successfully)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || Result code from last seed installation attempt &lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || Support error code from last seed installation attempt&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || 0x68 || reserved padding (unused)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBaudRate ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 512KHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 4MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 16MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBusMode ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1-bit&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 4-bit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SpecialContentType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
!  Found in&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| CTR (Old3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| Manual&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| DLP Child&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| KTR (New3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DeviceMoveContext ==&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;
|  0x10&lt;br /&gt;
|  IVs (ID0 of source console)&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x10&lt;br /&gt;
|  Encrypt Parameter (used to calculate the IV for encryption)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23611</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23611"/>
		<updated>2025-07-01T20:13:37Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: rework SEEDDB into &amp;quot;SEEDDB and TITLETAG&amp;quot; section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Services =&lt;br /&gt;
{{Anchor|FS}}{{Anchor|FSUSER}}{{Anchor|fs:USER}}&lt;br /&gt;
== Filesystem service &amp;quot;fs:USER&amp;quot; ==&lt;br /&gt;
You can at most have 32 FS archive handles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Dummy1|Dummy1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Control|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;
| [[FS:RenameFile|RenameFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectory|DeleteDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectoryRecursively|DeleteDirectoryRecursively]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CreateFile|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;
| [[FS:RenameDirectory|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 ID code has separate access info bitmasks, if it has any&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ControlArchive|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;
| [[FS:Obsoleted_2_0_FormatThisUserSaveData|Obsoleted_2_0_FormatThisUserSaveData]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_CreateSystemSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSystemSaveData|Obsoleted_3_0_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;
| [[FS:GetFreeBytes|GetFreeBytes]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetCardType|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;
| 0x1007&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcFatfsError|GetSdmcFatfsError]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandCid|GetNandCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcSpeedInfo|GetSdmcSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandSpeedInfo|GetNandSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcLog|GetSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandLog|GetNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearSdmcLog|ClearSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearNandLog|ClearNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotIsInserted|CardSlotIsInserted]]&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOn|CardSlotPowerOn]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOff|CardSlotPowerOff]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotGetCardIFPowerStatus|CardSlotGetCardIFPowerStatus]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead_4xIO|CardNorDirectRead_4xIO]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCpuWriteWithoutVerify|CardNorDirectCpuWriteWithoutVerify]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectSectorEraseWithoutVerify|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;
| [[FS:Obsoleted_3_0_CreateExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_CreateSharedExtSaveData|Obsoleted_3_0_CreateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_ReadExtSaveDataIcon|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_EnumerateExtSaveData|Obsoleted_3_0_EnumerateExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_EnumerateSharedExtSaveData|Obsoleted_3_0_EnumerateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_DeleteExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSharedExtSaveData|Obsoleted_3_0_DeleteSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBaudRate|SetCardSpiBaudRate]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBusMode|SetCardSpiBusMode]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SendInitializeInfoTo9|SendInitializeInfoTo9]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialContentIndex|GetSpecialContentIndex]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader|GetLegacyRomHeader]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyBannerData|GetLegacyBannerData]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckAuthorityToAccessExtSaveData|CheckAuthorityToAccessExtSaveData]]&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:QueryTotalQuotaSize|QueryTotalQuotaSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_GetExtDataBlockSize|Obsoleted_3_0_GetExtDataBlockSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:AbnegateAccessRight|AbnegateAccessRight]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteAllExtSaveDataOnNand|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;
| [[FS:CreateSeed|CreateSeed]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetFormatInfo|GetFormatInfo]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader2|GetLegacyRomHeader2]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_2_0_FormatCtrCardUserSaveData|Obsoleted_2_0_FormatCtrCardUserSaveData]]&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetArchiveResource|GetArchiveResource]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:FormatSaveData|FormatSaveData]]&lt;br /&gt;
| 0x6, in some cases this write isn&#039;t needed however&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacySubBannerData|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;
| [[FS:ReadSpecialFile|ReadSpecialFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialFileSize|GetSpecialFileSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateExtSaveData|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;
| [[FS:DeleteExtSaveData|DeleteExtSaveData]]&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;
| [[FS:ReadExtSaveDataIcon|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;
| [[FS:GetExtDataBlockSize|GetExtDataBlockSize]]&lt;br /&gt;
| 0x10100D (this doesn&#039;t apply in certain cases, however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateExtSaveData|EnumerateExtSaveData]]&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560240&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateSystemSaveData|CreateSystemSaveData]]&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;
| [[FS:DeleteSystemSaveData|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:StartDeviceMoveAsSource|StartDeviceMoveAsSource]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:StartDeviceMoveAsDestination|StartDeviceMoveAsDestination]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetArchivePriority|SetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetArchivePriority|GetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetCtrCardLatencyParameter|SetCtrCardLatencyParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D01C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetFsCompatibilityInfo|SetFsCompatibilityInfo]]&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:ResetCardCompatibilityParameter|ResetCardCompatibilityParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SwitchCleanupInvalidSaveData|SwitchCleanupInvalidSaveData]]&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateSystemSaveData|EnumerateSystemSaveData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:InitializeWithSdkVersion|InitializeWithSdkVersion]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetPriority|SetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetPriority|GetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandInfo|Obsoleted_4_0_GetNandInfo]]&lt;br /&gt;
| Stubbed, this returns an error&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:SetSaveDataSecureValue|SetSaveDataSecureValue]]&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;
| [[FS:GetSaveDataSecureValue|GetSaveDataSecureValue]]&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;
| [[FS:ControlSecureSave|ControlSecureSave]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:GetMediaType|GetMediaType]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandEraseCount|Obsoleted_4_0_GetNandEraseCount]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:ReadNandReport|ReadNandReport]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetOtherSaveDataSecureValue|SetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetOtherSaveDataSecureValue|GetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:BeginSaveDataMove|BeginSaveDataMove]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetThisSaveDataSecureValue|SetThisSaveDataSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetThisSaveDataSecureValue|GetThisSaveDataSecureValue]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckArchive|CheckArchive]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710140&lt;br /&gt;
| ?&lt;br /&gt;
| [[FS:TransferSaveDataCMAC|TransferSaveDataCMAC]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08720200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterTitleContentOverlay|RegisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08730100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterTitleContentOverlay|UnregisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterAllTitleContentOverlays|UnregisterAllTitleContentOverlays]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetSaveArchiveSecureValue|SetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSaveArchiveSecureValue|GetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterSpecialTitleContent|RegisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08780100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterSpecialTitleContent|UnregisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087900C2&lt;br /&gt;
| ?&lt;br /&gt;
| Same as [[FS:GetLegacyBannerData|GetLegacyBannerData]], except for the last parameter this internally passes u8 value 0x1 instead of 0x0, for the FSPXI command.&lt;br /&gt;
| 0x101015&lt;br /&gt;
|-&lt;br /&gt;
| 0x087A0180&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddSeed|AddSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087B0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetSeed|GetSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087C0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteSeed|DeleteSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087D0000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumSeeds|GetNumSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087E0042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListSeeds|ListSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087F0100&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:TitleContentHasSeed|TitleContentHasSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08800880&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddTitleTag|AddTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08810080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetTitleTag|GetTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08820080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteTitleTag|DeleteTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08830000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumTitleTags|GetNumTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08840042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListTitleTags|ListTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088500C0&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:CheckTitleSeed|CheckTitleSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088600C0&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| [[FS:CheckUpdatedDat|CheckUpdatedDat]]&lt;br /&gt;
| 0x80000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The question marks from Dummy1 to GetSpecialFileSize on the &amp;quot;available since system version&amp;quot; field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process access info 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 access info field is all zero&#039;s 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&#039;s 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;
{{Anchor|FSLDR}}{{Anchor|fs:LDR}}&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;
{{Anchor|FSReg}}{{Anchor|FSREG}}{{Anchor|fs:REG}}&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;
| [[FSReg:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| [[FSReg:Register|Register]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| [[FSReg:Unregister|Unregister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| [[FSReg:GetProgramInfo|GetProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| [[FSReg:LoadProgram|LoadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| [[FSReg:UnloadProgram|UnloadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| [[FSReg:CheckHostLoadId|CheckHostLoadId]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Only two sessions can be opened for this service at a time, hence no other processes can use this due to [[Process_Manager_Services|pm-module]] and [[Loader_Services|loader]] using this.&lt;br /&gt;
&lt;br /&gt;
=File and directory access=&lt;br /&gt;
==Files==&lt;br /&gt;
File session handles obtained via [[FS:OpenFile]] and [[FS:OpenFileDirectly]] can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. To use this service-like interface, simply call the SendSyncRequest SVC with a file session handle, using the IPC buffer in thread-local storage for parameters and responses, just like you would with a proper service.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[FSFile:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[FSFile:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| [[FSFile:OpenSubFile|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;
| [[FSFile:GetAttributes|GetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| [[FSFile:SetAttributes|SetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| [[FSFile:Flush|Flush]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| [[FSFile:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| [[FSFile:GetPriority|GetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| [[FSFile:OpenLinkFile|OpenLinkFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C010100&lt;br /&gt;
| [[FSFile:GetAvailable|GetAvailable]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
Directory session handles obtained via [[FS:OpenDirectory]] are usable via a service-like interface, following the exact same procedure described above for file sessions.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030040&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:GetPriority|GetPriority]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Archives =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ArchiveId&lt;br /&gt;
!  Description&lt;br /&gt;
!  Accessible via [[Filesystem_services|FS]]&lt;br /&gt;
!  Accessible via [[Filesystem_services_PXI|FSPXI]]&lt;br /&gt;
!  Only accessible by Process9 internally&lt;br /&gt;
!  Requires binary [[FS:OpenFile|Lowpath]]&lt;br /&gt;
!  Required exheader FS access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000003&lt;br /&gt;
| SelfNCCH (including [[#RomFS|RomFS]])&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004&lt;br /&gt;
| SaveData (the saveID/mediatype for this is loaded from data originally from the user process&#039; exheader)&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000006&lt;br /&gt;
| ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x100D, when the input extdataID isn&#039;t listed in the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000007&lt;br /&gt;
| Shared ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000008&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x4, when the input saveID doesn&#039;t match the exheader system-saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000009&lt;br /&gt;
| SDMC&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000000A&lt;br /&gt;
| SDMC Write-Only&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x808E&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345678&lt;br /&gt;
| ExtSaveData for BOSS&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345679&lt;br /&gt;
| CARD SPI FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x16&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567B&lt;br /&gt;
| ExtSaveData, and ExtSaveData for BOSS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567C&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567D&lt;br /&gt;
| NAND RW&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x800&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567E&lt;br /&gt;
| NAND RO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x200&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567F&lt;br /&gt;
| NAND RO Write FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345680&lt;br /&gt;
| Extdata transfer. Used for transferring [[Extdata#NAND_Shared_Extdata|NAND Shared Extdata]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345681&lt;br /&gt;
| System Savedata transfer. Used for transferring [[System_SaveData|System Save Data]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345682&lt;br /&gt;
| Unknown. There&#039;s code for this in spider v9.9, but that code isn&#039;t actually used.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678A&lt;br /&gt;
| Title access. With FS, this allows accessing NCCH/NCSD contents (ExeFS, RomFS, checking if a content uses a seed, checking the validity of the installed seed). FSPXI, additionally, allows opening raw NCCH/NCSD NCCH contents and DSiWare contents for reading, along with encrypted save data.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678B&lt;br /&gt;
| Used internally by Process9 as the lowest level title access archive. Allows for opening various sections of a title (TMD, CMD, raw contents, DLC contents, raw save data (including public/private/banner saves for DSiWare), title and/or content import context files and /data directories for save data.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678C&lt;br /&gt;
| Used internally to access [[Title_Database|Title Database (/dbs)]] files. For SD, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;. For NAND, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_t.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_i.db&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;jumpid.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678D&lt;br /&gt;
| Used internally to access non-title /dbs files on the NAND: &amp;lt;code&amp;gt;certs.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ticket.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678E&lt;br /&gt;
| FSPXI: Program Access (limited subset of merged main title + update/patch title access). For fs:LDR(used by the &amp;quot;loader&amp;quot; FIRM ARM11-process), only &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;. Not accessible with fs:USER.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None, see description.&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AB&lt;br /&gt;
| NAND CTR FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AC&lt;br /&gt;
| TWL PHOTO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AD&lt;br /&gt;
| TWLS (DSi Sound stores recordings here). This is mapped to the FAT12 image stored in the file at [[Twln/shared2/0000]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AE&lt;br /&gt;
| NAND TWL FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AF&lt;br /&gt;
| NAND W FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B0&lt;br /&gt;
| Internally creates the same &amp;quot;ID Storage&amp;quot; wrapper over the NAND that is used for SystemSaveData and Shared ExtData, but all operations are stubbed and return 0xE0C046F8.&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B1&lt;br /&gt;
| Gamecard SaveData (for check). This is a wrapper for UserSaveDataForCheck: the OpenArchive code for that is called with archive-lowpath TID=0/mediatype=2(gamecard).&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B2&lt;br /&gt;
| UserSaveData (for check). This is the same as the regular SaveData archive, except with this the savedata ID and mediatype is loaded from the input archive lowpath.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B3&lt;br /&gt;
| [[3DS_Virtual_Console#NAND_Savegame|AGB Save Data]]&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B4&lt;br /&gt;
| Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]?&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Archives listed as not requiring a binary lowpath, use lowpath type [[FS:OpenFile|empty]].&lt;br /&gt;
&lt;br /&gt;
The above permission bitmasks are from v2.x, see the above Services section for how these are handled.&lt;br /&gt;
&lt;br /&gt;
Archives CTR NAND, NAND RO Write FS, TWL NAND, NAND W FS, and CARD SPI FS require the corresponding process exheader access control mount flag to be set, in the exheader for any of the currently running ARM11 processes, for [[Filesystem_services_PXI|FSPXI]]. The access rights checked by [[Filesystem services|FS]] module for archive mounting with fs:USER, are stored in the process&#039; exheader accessinfo.&lt;br /&gt;
&lt;br /&gt;
The CARDSPI archive allows access to the gamecard CARD1 raw savedata flash(aka &amp;quot;cardspi:/&amp;quot; in [[FIRM|Process9]]), the file lowpath must be WCHAR &amp;quot;/&amp;quot;. The &amp;quot;NAND W FS&amp;quot; archive allows access to the raw NAND image(aka &amp;quot;wnand:/&amp;quot; in Process9), the file lowpath must be WCHAR &amp;quot;/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Filenames and Paths =&lt;br /&gt;
{{Anchor|PathType}} PathType:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Returned internally by Process9, when errors occur it seems(in particular when no nul-terminator was found in the input path). The data ptr is set to NULL.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| INVALID - Specifies an invalid path&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| EMPTY - Specifies an empty path&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| BINARY - Non-text based path. Meaning is per-archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each (signed char)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| UTF16 - Text-based path with UTF-16 characters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In IPC requests, sizes of ASCII and UTF16 paths must include space for the null-terminator. &lt;br /&gt;
&lt;br /&gt;
== Binary LowPath ==&lt;br /&gt;
The format of the data that a binary LowPath points to is custom per archive.&lt;br /&gt;
&lt;br /&gt;
=== SystemSaveData / Extdata / Shared Extdata Archive Path Data Format ===&lt;br /&gt;
&lt;br /&gt;
==== DataAccessPath ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8 [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x1 || only for NAND data (System Savedata / Shared Extdata), otherwise left 0:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 of current system&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Accesses from/to &amp;lt;code&amp;gt;nand:/fixdata&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 from [[Filesystem_services#DeviceMoveContext|Device Move Context]]&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SystemSaveData ====&lt;br /&gt;
&lt;br /&gt;
===== FS =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| save ID low (save ID high is 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===== FSPXI / FS System Savedata Transfer / FSPXI System Savedata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Index word !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 1 || save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Extdata / Shared Extdata ====&lt;br /&gt;
&lt;br /&gt;
===== FS / FS Extdata Transfer / FSPXI Extdata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ext save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ext save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This refers to the extdata filesystem structure&#039;s base directory at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;ext save ID low&amp;gt;/&amp;lt;ext save ID high&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
For FS Extdata, this would acccess &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;directory ID&amp;gt;/&amp;lt;file ID&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;file ID&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
For FS / FSPXI Extdata Transfer, this accesses &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== UserSaveDataForCheck Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]] (must be non-zero)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Lower word saveid&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Upper word saveid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem.&lt;br /&gt;
&lt;br /&gt;
=== 0x567890B4 Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Lower_word_saveid &amp;gt;&amp;gt; 8&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown. Game calculate this using formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0xFFFFFF00 | unknown_b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Title Access Archive Path Data Format ===&lt;br /&gt;
==== Title Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || High-level NCCH content access&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Save data access (high-level, decrypted)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw content (low-level NCCH/SRL) access&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Banner save data access (for DSiWare titles)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FS only: Save data transfer (internally uses generated data from [[FS:BeginSaveDataMove]] as the IV for &amp;quot;Save data access (low-level, encrypted)&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Save data access (low-level, encrypted)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || NCCH Header(s)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;quot;is seeded&amp;quot; check&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seed verify/validate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Header Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[NCCH/Extended_Header|Extheader]] (0x0-0x400)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[NCCH/Extended_Header|Extheader]] AccessDesc (0x400-0x800)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw [[NCCH#NCCH_Header|NCCH Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || Program ID (Title ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0xB || 0x1 || [[Mediatypes|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Title_Access_Type|Title Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x10 || Dynamic data depending on [[Filesystem_services#Title_Access_Type|Title Access Type]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! High Level NCCH Access !! Save Data Access (high level) !! Raw Content !! FS only: Save Data Transfer&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Dynamic data depending on [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]:&lt;br /&gt;
For ExeFS, (System Menu Data / &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-byte ExeFS file name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For Header Access,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Filesystem_services#NCCH_Header_Access_Type|u64, NCCH Header Access Type]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RomFS,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[NCCH#Content_Types|u64, Allowed content types flag]]&lt;br /&gt;
(&amp;lt;code&amp;gt;(1 &amp;lt;&amp;lt; allowed_type_a) |&lt;br /&gt;
&lt;br /&gt;
(1 &amp;lt;&amp;lt; allowed_type_b)...&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x10 || 16-byte IV for save data crypto&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Save data transfer key from [[FS:BeginSaveDataMove]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x10 || 16-byte seed for titles that require one, or for validating a seed against the check value in the [[NCCH#NCCH_Header|NCCH Header]]&#039;s check value.&lt;br /&gt;
If the title does not use a seed, this should not be included and size 0x14 should be used instead of 0x24.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For encrypted save data access and banner save data access, the entire 0x10 portion of the dynamic data is left blank.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;is seeded check&amp;quot; NCCH access type opens a virtual 1-byte file that reads either 0 or 1; this value is generated on-the-fly and will be 1 if ncchflags[7] has bit5 set (content uses seed), and 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
For NCCH sections that require a seed (e.g. &amp;lt;code&amp;gt;.code&amp;lt;/code&amp;gt;, RomFS, etc.), the additional seed portion of the low path must be populated with the correct seed. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Seed Verify/Validate&amp;quot; NCCH access type also requires the seed portion of the lowpath. The target NCCH content is opened (with the opened file interface being stubbed, meaning no real reads/writes can be performed on it), and the given seed is used to calculate the seed check hash, and part of it is compared to the check value in the NCCH header. If it matches, opening the &amp;quot;file&amp;quot; succeeds, otherwise 0xD900458C is returned. If attempt is made to use the seed validation type on a content that does not use a seed, error 0xC92044E6 is returned.&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
For FS, this archive functions the same, except for the following limitations:&lt;br /&gt;
&lt;br /&gt;
- Only the title access types &amp;quot;High Level NCCH Access&amp;quot; and &amp;quot;High Level Save Data Access&amp;quot;, and &amp;quot;Save Data Transfer&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For high level NCCH access, the types &amp;quot;RomFS&amp;quot;, &amp;quot;System Menu Data&amp;quot;, &amp;quot;Seeded check&amp;quot;, and &amp;quot;Seed Check/Verify&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For &amp;quot;Seed Check/Verify&amp;quot;, rather than providing the title seed in the file path (as is the case for FSPXI), the seed is retrieved from the seed database (meaning the file lowpath size is always 0x14 for FS).&lt;br /&gt;
&lt;br /&gt;
=== Program Access / SelfNCCH access ===&lt;br /&gt;
&lt;br /&gt;
Provides access to a &amp;quot;merged&amp;quot; archive of a base title and, optionally, a separate update (patch) title.&lt;br /&gt;
&lt;br /&gt;
If no patch title exists, the base title is considered to be the patch title, i.e. turning all &amp;quot;patch&amp;quot; accesses into accesses to the base title.&lt;br /&gt;
&lt;br /&gt;
==== Program Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description !! Accesses&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt; || Patch title&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Save Data (high level, decrypted) || -&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RomFS (all [[NCCH#Content_Type|content types]]) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Patch title&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Program Handle from [[PXIPM:RegisterProgram]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Program_Access_Type|Program Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || Dynamic data depending on [[Filesystem_services#Program_Access_Type|Program Access Type]]:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ExeFS files (System Menu Data, etc.) !! RomFS of base title (all [[NCCH#Content_Type|content types]])&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-character ExeFS filename&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, content index of target content&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
- FSPXI allows all access types.&lt;br /&gt;
&lt;br /&gt;
- When used through fs:LDR by loader, FS only provides access to &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
- For SelfNCCH access, the only allowed access types are &amp;quot;RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default)&amp;quot; of the Base or Patch title, and &amp;quot;System Menu Data&amp;quot;. Attempting to access &amp;quot;Save Data&amp;quot; results in error 0xE0E046BE, &amp;quot;RomFS (all [[NCCH#Content_Type|content types]])&amp;quot; in 0xF9604784, and &amp;quot;&amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&amp;quot; in 0xD9004676.&lt;br /&gt;
&lt;br /&gt;
=== [[RomFS]] ===&lt;br /&gt;
&lt;br /&gt;
Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself.&lt;br /&gt;
&lt;br /&gt;
With FSPXI the returned data for RomFS is the entire RomFS section from the NCCH, starting at the IVFC header.&lt;br /&gt;
&lt;br /&gt;
The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath:&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;
| See above. The only values which FS-module doesn&#039;t allow to be used here are:&lt;br /&gt;
* 0x1: Error 0xE0E046BE.&lt;br /&gt;
* 0x3: Error 0xE0E046BE.&lt;br /&gt;
* 0x4: FS-module executes svcBreak when using this.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| See above. Not validated by FS-module.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Anti Savegame Restore=&lt;br /&gt;
Anti Savegame Restore, internally referred to as &#039;&#039;Save Data Rollback Prevention&#039;&#039;, is a feature originally implemented in the FS module with [[4.0.0-7]], which prevents the user from restoring previous versions of a savegame image. This feature is not used (in practice) for gamecard games. When an old version of the save is detected, the application will display an error regarding old savegame version, then delete and recreate the save data (similar to when it is corrupted).&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
When creating the savedata, the application generates a secure value (a 64 bit unsigned integer), then stores it in either the [[DISA_and_DIFF#DISA_header|DISA save image header]] or the [[Filesystem_services#Anti_Savegame_Restore_Save_Data|Anti Savegame Restore Save Data]]. The application then uses the anti-savegame-restore commands ([[FS:SetSaveDataSecureValue]], [[FS:GetSaveDataSecureValue]], [[FS:SetOtherSaveDataSecureValue]], [[FS:GetOtherSaveDataSecureValue]], [[FS:SetThisSaveDataSecureValue]], [[FS:GetThisSaveDataSecureValue]], [[FS:SetSaveArchiveSecureValue]] and [[FS:GetSaveArchiveSecureValue]]) to verify the value known to the game for comparison with the value returned by FS, and to update the value in the corresponding storage location.&lt;br /&gt;
&lt;br /&gt;
Each time the application writes to the savegame, the value should be updated by both the application and through FS. Usually, applications update this value by incrementing it. However, generating a new random-number or other methods of updating it can be used as well.&lt;br /&gt;
&lt;br /&gt;
==Anti Savegame Restore Save Data==&lt;br /&gt;
The save data used for this feature is stored in [[System_SaveData|System Save Data]] ID 0x00010011 and contains only one file, named &amp;lt;code&amp;gt;DB&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
===SecureValueKey===&lt;br /&gt;
Depending on which command is used, secure value keys can be interpreted as:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Title ID&lt;br /&gt;
|}&lt;br /&gt;
or:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, Unique ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Main Structure===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of secure value entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x1C000 (8 * 14336) || [[Filesystem_services#SecureValueKey|Secure value keys]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D000 || 0x1C000 (8 * 14336) || u64s, Secure values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Applications using this feature==&lt;br /&gt;
* Animal Crossing: New Leaf&lt;br /&gt;
* Pokemon X &amp;amp; Y&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire Demo &lt;br /&gt;
* Pokemon Shuffle&lt;br /&gt;
* Super Smash Bros&lt;br /&gt;
* Pokemon Red,Blue and Yellow (GB(C) VC)&lt;br /&gt;
* Rusty&#039;s Real Deal Baseball&lt;br /&gt;
* Megami Meguri&lt;br /&gt;
&lt;br /&gt;
=SEEDDB and TITLETAG=&lt;br /&gt;
With [[9.6.0-24|9.6.0-X]] new [[System_SaveData]] with save ID 0x0001000F was added. This save data contains both the NCCH seed database (SEEDDB) and the title tag database (TITLETAG).&lt;br /&gt;
&lt;br /&gt;
These databases are managed by the commands [[FS:AddSeed]], [[FS:GetSeed]], [[FS:DeleteSeed]], [[FS:GetNumSeeds]] and [[FS:ListSeeds]] for SEEDDB, and [[FS:AddTitleTag]], [[FS:GetTitleTag]], [[FS:DeleteTitleTag]], [[FS:GetNumTitleTags]], and [[FS:ListTitleTags]] for TITLETAG respectively.&lt;br /&gt;
&lt;br /&gt;
Both the [[Home_Menu|HOME Menu]] and the [[NIM_Services|NIM]] module have access to these commands.&lt;br /&gt;
&lt;br /&gt;
==SEEDDB==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;SEEDDB&amp;lt;/code&amp;gt;, it contains the title-unique seed-data used for the new [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of seed data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of seed entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x7D00 (16 * 2000) || Seed data, 16 bytes per seed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TITLETAG==&lt;br /&gt;
&lt;br /&gt;
Stored in the system savedata archive 0x0001000F as a file named &amp;lt;code&amp;gt;TITLETAG&amp;lt;/code&amp;gt;, it contains information used by the [[Home_Menu|HOME Menu]] to handle cases when a to-be-released title has been purchased already, that is, to properly install the seed required for [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
When a to-be-released title is purchased, the [[NIM_Services|NIM]] module installs a [[Filesystem_services#TitleTag|title tag]] with enough information about the title for the [[Home_Menu|HOME Menu]] to be able to initiate a seed import once the title has been released (and thus, the title&#039;s NCCH content lock seed). Until the title&#039;s seed is released, and while the title tag remains in the database, the HOME Menu will prevent the user from launching the software as it would not run without the seed. Once released, information from the title tag is used to download the seed, and, if successful, the title tag is removed from the database, making the software playable.&lt;br /&gt;
&lt;br /&gt;
The file follows a simple key-value format allowing the storage of title tag data for up to 2000 unique title IDs.&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x3E80 (8 * 2000) || u64s, Title IDs&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E80 || 0x3E800 (0x80 * 2000) || [[Filesystem_services#TitleTag|Title Tag]] data, 0x80 bytes per entry&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Common Types =&lt;br /&gt;
== MediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Game Card&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemMediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| CTR NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| TWL NAND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| TWL Photo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenFlags ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Read&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Write&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Create&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&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;
| 0x1&lt;br /&gt;
| Is Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Hidden&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Read-Only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WriteOption ==&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;
| 0x1&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Update Time Stamp&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DirectoryEntry ==&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;
| 0x20C&lt;br /&gt;
| UTF-16 Entry Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20C&lt;br /&gt;
| 0xA&lt;br /&gt;
| 8.3 short filename name&lt;br /&gt;
|-&lt;br /&gt;
| 0x216&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8.3 short filename extension&lt;br /&gt;
|-&lt;br /&gt;
| 0x21A&lt;br /&gt;
| 0x1&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x21B&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x21C&lt;br /&gt;
| 0x4&lt;br /&gt;
| [[Filesystem_services#Attributes|Attributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x220&lt;br /&gt;
| 0x8&lt;br /&gt;
| Entry Size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ArchiveResource ==&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;
| Sector byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Cluster byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Partition capacity in clusters&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Available free space in clusters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProgramInfo ==&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;
| 0x8&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x7&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProductInfo ==&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;
| 0x10&lt;br /&gt;
| Product Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Company Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| Remaster Version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IntegrityVerificationSeed ==&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;
|  0x10&lt;br /&gt;
|  AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x120&lt;br /&gt;
|  The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x8&lt;br /&gt;
| Save ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Save ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueSlot ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| SD Application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueEntry ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || When used as an input entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || This entry should be removed.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || This entry should be updated with the given value.&lt;br /&gt;
|}&lt;br /&gt;
When returned from a command:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || No entry with the given slot and title ID was found, or: this entry is unused.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || The entry with the given slot and title ID was found, or: this entry is used.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || u64, Secure Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TitleTag ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Magic, &amp;lt;code&amp;gt;PREP&amp;lt;/code&amp;gt; (PREPurchase install)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || s32, Release date year&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1 || u8, Release date month&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || u8, Release date day&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x2 || u16, Country code&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || u32, Seed status (0: not downloaded yet, 1: last download attempt failed, 2: seed installed successfully)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || Result code from last seed installation attempt &lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || Support error code from last seed installation attempt&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || 0x68 || reserved padding (unused)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBaudRate ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 512KHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 4MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 16MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBusMode ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1-bit&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 4-bit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SpecialContentType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
!  Found in&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| CTR (Old3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| Manual&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| DLP Child&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| KTR (New3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DeviceMoveContext ==&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;
|  0x10&lt;br /&gt;
|  IVs (ID0 of source console)&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x10&lt;br /&gt;
|  Encrypt Parameter (used to calculate the IV for encryption)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Anti_Savegame_Restore&amp;diff=23610</id>
		<title>Anti Savegame Restore</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Anti_Savegame_Restore&amp;diff=23610"/>
		<updated>2025-07-01T13:21:30Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Changed redirect target from Filesystem Services#Anti Savegame Restore to Filesystem services#Anti Savegame Restore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Filesystem_services#Anti_Savegame_Restore]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Anti_Savegame_Restore&amp;diff=23609</id>
		<title>Anti Savegame Restore</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Anti_Savegame_Restore&amp;diff=23609"/>
		<updated>2025-07-01T13:21:22Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Redirected page to Filesystem Services#Anti Savegame Restore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Filesystem_Services#Anti_Savegame_Restore]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23608</id>
		<title>Filesystem services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Filesystem_services&amp;diff=23608"/>
		<updated>2025-07-01T13:20:07Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Move anti savegame restore here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Services =&lt;br /&gt;
{{Anchor|FS}}{{Anchor|FSUSER}}{{Anchor|fs:USER}}&lt;br /&gt;
== Filesystem service &amp;quot;fs:USER&amp;quot; ==&lt;br /&gt;
You can at most have 32 FS archive handles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version &lt;br /&gt;
!  Description&lt;br /&gt;
!   scope=&amp;quot;col&amp;quot; width=&amp;quot;400&amp;quot; | Required [[NCCH/Extended_Header|exheader]] access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Dummy1|Dummy1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Control|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;
| [[FS:RenameFile|RenameFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08060142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectory|DeleteDirectory]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070142&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteDirectoryRecursively|DeleteDirectoryRecursively]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080202&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CreateFile|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;
| [[FS:RenameDirectory|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 ID code has separate access info bitmasks, if it has any&lt;br /&gt;
|-&lt;br /&gt;
| 0x080D0144&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ControlArchive|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;
| [[FS:Obsoleted_2_0_FormatThisUserSaveData|Obsoleted_2_0_FormatThisUserSaveData]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08100200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_CreateSystemSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSystemSaveData|Obsoleted_3_0_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;
| [[FS:GetFreeBytes|GetFreeBytes]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08130000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetCardType|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;
| 0x1007&lt;br /&gt;
|-&lt;br /&gt;
| 0x08160000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcFatfsError|GetSdmcFatfsError]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08170000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcDetected|IsSdmcDetected]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08180000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:IsSdmcWritable|IsSdmcWritable]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08190042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCid|GetSdmcCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081A0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandCid|GetNandCid]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081B0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcSpeedInfo|GetSdmcSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081C0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandSpeedInfo|GetNandSpeedInfo]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081D0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcLog|GetSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081E0042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetNandLog|GetNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x081F0000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearSdmcLog|ClearSdmcLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08200000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ClearNandLog|ClearNandLog]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08210000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotIsInserted|CardSlotIsInserted]]&lt;br /&gt;
| 0x1017&lt;br /&gt;
|-&lt;br /&gt;
| 0x08220000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOn|CardSlotPowerOn]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08230000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotPowerOff|CardSlotPowerOff]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08240000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardSlotGetCardIFPowerStatus|CardSlotGetCardIFPowerStatus]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08250040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommand|CardNorDirectCommand]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08260080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08270082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead|CardNorDirectRead]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082800C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08290082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWrite|CardNorDirectWrite]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082A00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectRead_4xIO|CardNorDirectRead_4xIO]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082C0082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectCpuWriteWithoutVerify|CardNorDirectCpuWriteWithoutVerify]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x082D0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CardNorDirectSectorEraseWithoutVerify|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;
| [[FS:Obsoleted_3_0_CreateExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_CreateSharedExtSaveData|Obsoleted_3_0_CreateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08320102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_ReadExtSaveDataIcon|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_EnumerateExtSaveData|Obsoleted_3_0_EnumerateExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08340082&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_EnumerateSharedExtSaveData|Obsoleted_3_0_EnumerateSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08350080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_DeleteExtSaveData|Obsoleted_3_0_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;
| [[FS:Obsoleted_3_0_DeleteSharedExtSaveData|Obsoleted_3_0_DeleteSharedExtSaveData]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08370040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBaudRate|SetCardSpiBaudRate]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08380040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetCardSpiBusMode|SetCardSpiBusMode]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x08390000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SendInitializeInfoTo9|SendInitializeInfoTo9]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083A0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialContentIndex|GetSpecialContentIndex]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x083B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader|GetLegacyRomHeader]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyBannerData|GetLegacyBannerData]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x083D0100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckAuthorityToAccessExtSaveData|CheckAuthorityToAccessExtSaveData]]&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x083E00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:QueryTotalQuotaSize|QueryTotalQuotaSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x083F00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_3_0_GetExtDataBlockSize|Obsoleted_3_0_GetExtDataBlockSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08400040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:AbnegateAccessRight|AbnegateAccessRight]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08410000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteSdmcRoot|DeleteSdmcRoot]]&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08420040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:DeleteAllExtSaveDataOnNand|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;
| [[FS:CreateSeed|CreateSeed]]&lt;br /&gt;
| 0x2&lt;br /&gt;
|-&lt;br /&gt;
| 0x084500C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetFormatInfo|GetFormatInfo]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08460102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacyRomHeader2|GetLegacyRomHeader2]]&lt;br /&gt;
| 0x1015&lt;br /&gt;
|-&lt;br /&gt;
| 0x08470180&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:Obsoleted_2_0_FormatCtrCardUserSaveData|Obsoleted_2_0_FormatCtrCardUserSaveData]]&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x08480042&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]&lt;br /&gt;
| 0x100D&lt;br /&gt;
|-&lt;br /&gt;
| 0x08490040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetArchiveResource|GetArchiveResource]]&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 0x084A0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084B0002&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]&lt;br /&gt;
| 0x4000&lt;br /&gt;
|-&lt;br /&gt;
| 0x084C0242&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:FormatSaveData|FormatSaveData]]&lt;br /&gt;
| 0x6, in some cases this write isn&#039;t needed however&lt;br /&gt;
|-&lt;br /&gt;
| 0x084D0102&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetLegacySubBannerData|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;
| [[FS:ReadSpecialFile|ReadSpecialFile]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08500040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSpecialFileSize|GetSpecialFileSize]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08510242&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateExtSaveData|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;
| [[FS:DeleteExtSaveData|DeleteExtSaveData]]&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;
| [[FS:ReadExtSaveDataIcon|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;
| [[FS:GetExtDataBlockSize|GetExtDataBlockSize]]&lt;br /&gt;
| 0x10100D (this doesn&#039;t apply in certain cases, however)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08550102&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateExtSaveData|EnumerateExtSaveData]]&lt;br /&gt;
| 0x101005&lt;br /&gt;
|-&lt;br /&gt;
| 0x08560240&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:CreateSystemSaveData|CreateSystemSaveData]]&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;
| [[FS:DeleteSystemSaveData|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:StartDeviceMoveAsSource|StartDeviceMoveAsSource]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08590200&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:StartDeviceMoveAsDestination|StartDeviceMoveAsDestination]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x085A00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetArchivePriority|SetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085B0080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetArchivePriority|GetArchivePriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x085C00C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetCtrCardLatencyParameter|SetCtrCardLatencyParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085D01C0&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetFsCompatibilityInfo|SetFsCompatibilityInfo]]&lt;br /&gt;
| 0x100001&lt;br /&gt;
|-&lt;br /&gt;
| 0x085E0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:ResetCardCompatibilityParameter|ResetCardCompatibilityParameter]]&lt;br /&gt;
| 0xE&lt;br /&gt;
|-&lt;br /&gt;
| 0x085F0040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SwitchCleanupInvalidSaveData|SwitchCleanupInvalidSaveData]]&lt;br /&gt;
| 0x12004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08600042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:EnumerateSystemSaveData|EnumerateSystemSaveData]]&lt;br /&gt;
| 0x2004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08610042&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:InitializeWithSdkVersion|InitializeWithSdkVersion]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08620040&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:SetPriority|SetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08630000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:GetPriority|GetPriority]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08640000&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandInfo|Obsoleted_4_0_GetNandInfo]]&lt;br /&gt;
| Stubbed, this returns an error&lt;br /&gt;
|-&lt;br /&gt;
| 0x08650140&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:SetSaveDataSecureValue|SetSaveDataSecureValue]]&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;
| [[FS:GetSaveDataSecureValue|GetSaveDataSecureValue]]&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;
| [[FS:ControlSecureSave|ControlSecureSave]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08680000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:GetMediaType|GetMediaType]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08690000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:Obsoleted_4_0_GetNandEraseCount|Obsoleted_4_0_GetNandEraseCount]]&lt;br /&gt;
| Stubbed, this returns an error.&lt;br /&gt;
|-&lt;br /&gt;
| 0x086A0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[FS:ReadNandReport|ReadNandReport]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086B00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetOtherSaveDataSecureValue|SetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086C00C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetOtherSaveDataSecureValue|GetOtherSaveDataSecureValue]]&lt;br /&gt;
| 0x121004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086D0080&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:BeginSaveDataMove|BeginSaveDataMove]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x086E00C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetThisSaveDataSecureValue|SetThisSaveDataSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x086F0040&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetThisSaveDataSecureValue|GetThisSaveDataSecureValue]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087000C2&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:CheckArchive|CheckArchive]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08710140&lt;br /&gt;
| ?&lt;br /&gt;
| [[FS:TransferSaveDataCMAC|TransferSaveDataCMAC]]&lt;br /&gt;
| 0x20004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08720200&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterTitleContentOverlay|RegisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08730100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterTitleContentOverlay|UnregisterTitleContentOverlay]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08740000&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterAllTitleContentOverlays|UnregisterAllTitleContentOverlays]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08750140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:SetSaveArchiveSecureValue|SetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x087600C0&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:GetSaveArchiveSecureValue|GetSaveArchiveSecureValue]]&lt;br /&gt;
|None&lt;br /&gt;
|-&lt;br /&gt;
| 0x08770140&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:RegisterSpecialTitleContent|RegisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x08780100&lt;br /&gt;
|?&lt;br /&gt;
| [[FS:UnregisterSpecialTitleContent|UnregisterSpecialTitleContent]]&lt;br /&gt;
| 0x80004&lt;br /&gt;
|-&lt;br /&gt;
| 0x087900C2&lt;br /&gt;
| ?&lt;br /&gt;
| Same as [[FS:GetLegacyBannerData|GetLegacyBannerData]], except for the last parameter this internally passes u8 value 0x1 instead of 0x0, for the FSPXI command.&lt;br /&gt;
| 0x101015&lt;br /&gt;
|-&lt;br /&gt;
| 0x087A0180&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddSeed|AddSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087B0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetSeed|GetSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087C0080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteSeed|DeleteSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087D0000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumSeeds|GetNumSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087E0042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListSeeds|ListSeeds]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x087F0100&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:TitleContentHasSeed|TitleContentHasSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08800880&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:AddTitleTag|AddTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08810080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetTitleTag|GetTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08820080&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:DeleteTitleTag|DeleteTitleTag]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08830000&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:GetNumTitleTags|GetNumTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08840042&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:ListTitleTags|ListTitleTags]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088500C0&lt;br /&gt;
| [[9.6.0-24|9.6.0-X]]&lt;br /&gt;
| [[FS:CheckTitleSeed|CheckTitleSeed]]&lt;br /&gt;
| 0x200000&lt;br /&gt;
|-&lt;br /&gt;
| 0x088600C0&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| [[FS:CheckUpdatedDat|CheckUpdatedDat]]&lt;br /&gt;
| 0x80000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The question marks from Dummy1 to GetSpecialFileSize on the &amp;quot;available since system version&amp;quot; field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.&lt;br /&gt;
&lt;br /&gt;
When access rights are required for a command, at least one of the bits in the process access info 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 access info field is all zero&#039;s 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&#039;s 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;
{{Anchor|FSLDR}}{{Anchor|fs:LDR}}&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;
{{Anchor|FSReg}}{{Anchor|FSREG}}{{Anchor|fs:REG}}&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;
| [[FSReg:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040103C0&lt;br /&gt;
| [[FSReg:Register|Register]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020040&lt;br /&gt;
| [[FSReg:Unregister|Unregister]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040300C0&lt;br /&gt;
| [[FSReg:GetProgramInfo|GetProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040100&lt;br /&gt;
| [[FSReg:LoadProgram|LoadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04050080&lt;br /&gt;
| [[FSReg:UnloadProgram|UnloadProgram]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04060080&lt;br /&gt;
| [[FSReg:CheckHostLoadId|CheckHostLoadId]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Only two sessions can be opened for this service at a time, hence no other processes can use this due to [[Process_Manager_Services|pm-module]] and [[Loader_Services|loader]] using this.&lt;br /&gt;
&lt;br /&gt;
=File and directory access=&lt;br /&gt;
==Files==&lt;br /&gt;
File session handles obtained via [[FS:OpenFile]] and [[FS:OpenFileDirectly]] can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. To use this service-like interface, simply call the SendSyncRequest SVC with a file session handle, using the IPC buffer in thread-local storage for parameters and responses, just like you would with a proper service.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[FSFile:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[FSFile:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010100&lt;br /&gt;
| [[FSFile:OpenSubFile|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;
| [[FSFile:GetAttributes|GetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08070040&lt;br /&gt;
| [[FSFile:SetAttributes|SetAttributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08080000&lt;br /&gt;
| [[FSFile:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08090000&lt;br /&gt;
| [[FSFile:Flush|Flush]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080A0040&lt;br /&gt;
| [[FSFile:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080B0000&lt;br /&gt;
| [[FSFile:GetPriority|GetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x080C0000&lt;br /&gt;
| [[FSFile:OpenLinkFile|OpenLinkFile]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C010100&lt;br /&gt;
| [[FSFile:GetAvailable|GetAvailable]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
Directory session handles obtained via [[FS:OpenDirectory]] are usable via a service-like interface, following the exact same procedure described above for file sessions.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Dummy1|Dummy1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x040100C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Control|Control]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08010042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Read|Read]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08020000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[FSDir:Close|Close]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08030040&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:SetPriority|SetPriority]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x08040000&lt;br /&gt;
| ?&lt;br /&gt;
| [[FSDir:GetPriority|GetPriority]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Archives =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ArchiveId&lt;br /&gt;
!  Description&lt;br /&gt;
!  Accessible via [[Filesystem_services|FS]]&lt;br /&gt;
!  Accessible via [[Filesystem_services_PXI|FSPXI]]&lt;br /&gt;
!  Only accessible by Process9 internally&lt;br /&gt;
!  Requires binary [[FS:OpenFile|Lowpath]]&lt;br /&gt;
!  Required exheader FS access info bitmask&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000003&lt;br /&gt;
| SelfNCCH (including [[#RomFS|RomFS]])&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000004&lt;br /&gt;
| SaveData (the saveID/mediatype for this is loaded from data originally from the user process&#039; exheader)&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000006&lt;br /&gt;
| ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x100D, when the input extdataID isn&#039;t listed in the exheader.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000007&lt;br /&gt;
| Shared ExtSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000008&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x4, when the input saveID doesn&#039;t match the exheader system-saveID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000009&lt;br /&gt;
| SDMC&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x8E&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000000A&lt;br /&gt;
| SDMC Write-Only&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x808E&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345678&lt;br /&gt;
| ExtSaveData for BOSS&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x44&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345679&lt;br /&gt;
| CARD SPI FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x16&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567B&lt;br /&gt;
| ExtSaveData, and ExtSaveData for BOSS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567C&lt;br /&gt;
| SystemSaveData&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567D&lt;br /&gt;
| NAND RW&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x800&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567E&lt;br /&gt;
| NAND RO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x200&lt;br /&gt;
|-&lt;br /&gt;
| 0x1234567F&lt;br /&gt;
| NAND RO Write FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345680&lt;br /&gt;
| Extdata transfer. Used for transferring [[Extdata#NAND_Shared_Extdata|NAND Shared Extdata]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345681&lt;br /&gt;
| System Savedata transfer. Used for transferring [[System_SaveData|System Save Data]] during [[System_Transfer#System_Save_Data_/_Shared_Extdata_Transfer|system tranfers]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12345682&lt;br /&gt;
| Unknown. There&#039;s code for this in spider v9.9, but that code isn&#039;t actually used.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678A&lt;br /&gt;
| Title access. With FS, this allows accessing NCCH/NCSD contents (ExeFS, RomFS, checking if a content uses a seed, checking the validity of the installed seed). FSPXI, additionally, allows opening raw NCCH/NCSD NCCH contents and DSiWare contents for reading, along with encrypted save data.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x1005&lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678B&lt;br /&gt;
| Used internally by Process9 as the lowest level title access archive. Allows for opening various sections of a title (TMD, CMD, raw contents, DLC contents, raw save data (including public/private/banner saves for DSiWare), title and/or content import context files and /data directories for save data.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678C&lt;br /&gt;
| Used internally to access [[Title_Database|Title Database (/dbs)]] files. For SD, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;. For NAND, &amp;lt;code&amp;gt;title.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;import.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_t.db&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tmp_i.db&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;jumpid.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678D&lt;br /&gt;
| Used internally to access non-title /dbs files on the NAND: &amp;lt;code&amp;gt;certs.db&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ticket.db&amp;lt;/code&amp;gt;.&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x2345678E&lt;br /&gt;
| FSPXI: Program Access (limited subset of merged main title + update/patch title access). For fs:LDR(used by the &amp;quot;loader&amp;quot; FIRM ARM11-process), only &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;. Not accessible with fs:USER.&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| None, see description.&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AB&lt;br /&gt;
| NAND CTR FS&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AC&lt;br /&gt;
| TWL PHOTO&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AD&lt;br /&gt;
| TWLS (DSi Sound stores recordings here). This is mapped to the FAT12 image stored in the file at [[Twln/shared2/0000]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AE&lt;br /&gt;
| NAND TWL FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890AF&lt;br /&gt;
| NAND W FS&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x100&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B0&lt;br /&gt;
| Internally creates the same &amp;quot;ID Storage&amp;quot; wrapper over the NAND that is used for SystemSaveData and Shared ExtData, but all operations are stubbed and return 0xE0C046F8.&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B1&lt;br /&gt;
| Gamecard SaveData (for check). This is a wrapper for UserSaveDataForCheck: the OpenArchive code for that is called with archive-lowpath TID=0/mediatype=2(gamecard).&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B2&lt;br /&gt;
| UserSaveData (for check). This is the same as the regular SaveData archive, except with this the savedata ID and mediatype is loaded from the input archive lowpath.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| 0x6&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B3&lt;br /&gt;
| [[3DS_Virtual_Console#NAND_Savegame|AGB Save Data]]&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| 0x567890B4&lt;br /&gt;
| Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]?&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Archives listed as not requiring a binary lowpath, use lowpath type [[FS:OpenFile|empty]].&lt;br /&gt;
&lt;br /&gt;
The above permission bitmasks are from v2.x, see the above Services section for how these are handled.&lt;br /&gt;
&lt;br /&gt;
Archives CTR NAND, NAND RO Write FS, TWL NAND, NAND W FS, and CARD SPI FS require the corresponding process exheader access control mount flag to be set, in the exheader for any of the currently running ARM11 processes, for [[Filesystem_services_PXI|FSPXI]]. The access rights checked by [[Filesystem services|FS]] module for archive mounting with fs:USER, are stored in the process&#039; exheader accessinfo.&lt;br /&gt;
&lt;br /&gt;
The CARDSPI archive allows access to the gamecard CARD1 raw savedata flash(aka &amp;quot;cardspi:/&amp;quot; in [[FIRM|Process9]]), the file lowpath must be WCHAR &amp;quot;/&amp;quot;. The &amp;quot;NAND W FS&amp;quot; archive allows access to the raw NAND image(aka &amp;quot;wnand:/&amp;quot; in Process9), the file lowpath must be WCHAR &amp;quot;/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Filenames and Paths =&lt;br /&gt;
{{Anchor|PathType}} PathType:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Returned internally by Process9, when errors occur it seems(in particular when no nul-terminator was found in the input path). The data ptr is set to NULL.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| INVALID - Specifies an invalid path&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| EMPTY - Specifies an empty path&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| BINARY - Non-text based path. Meaning is per-archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each (signed char)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| UTF16 - Text-based path with UTF-16 characters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In IPC requests, sizes of ASCII and UTF16 paths must include space for the null-terminator. &lt;br /&gt;
&lt;br /&gt;
== Binary LowPath ==&lt;br /&gt;
The format of the data that a binary LowPath points to is custom per archive.&lt;br /&gt;
&lt;br /&gt;
=== SystemSaveData / Extdata / Shared Extdata Archive Path Data Format ===&lt;br /&gt;
&lt;br /&gt;
==== DataAccessPath ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8 [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x1 || only for NAND data (System Savedata / Shared Extdata), otherwise left 0:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 of current system&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Accesses from/to &amp;lt;code&amp;gt;nand:/fixdata&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Accesses from/to &amp;lt;code&amp;gt;nand:/data/&amp;lt;ID0 from [[Filesystem_services#DeviceMoveContext|Device Move Context]]&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SystemSaveData ====&lt;br /&gt;
&lt;br /&gt;
===== FS =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| save ID low (save ID high is 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===== FSPXI / FS System Savedata Transfer / FSPXI System Savedata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Index word !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 1 || save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file path would access the file at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/sysdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Extdata / Shared Extdata ====&lt;br /&gt;
&lt;br /&gt;
===== FS / FS Extdata Transfer / FSPXI Extdata Transfer =====&lt;br /&gt;
&lt;br /&gt;
====== Archive Path ======&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ext save ID low&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ext save ID high&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This refers to the extdata filesystem structure&#039;s base directory at &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;ext save ID low&amp;gt;/&amp;lt;ext save ID high&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
====== File Path ======&lt;br /&gt;
The file path is a cleartext ASCII or UTF16 file path (&amp;lt;code&amp;gt;&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
For FS Extdata, this would acccess &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;directory ID&amp;gt;/&amp;lt;file ID&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt; refers to the virtual file system inside the &amp;lt;/code&amp;gt;&amp;lt;file ID&amp;gt;&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
For FS / FSPXI Extdata Transfer, this accesses &amp;lt;code&amp;gt;&amp;lt;base path&amp;gt;/extdata/&amp;lt;save ID low&amp;gt;/&amp;lt;save ID high&amp;gt;/&amp;lt;file path&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== UserSaveDataForCheck Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]] (must be non-zero)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Lower word saveid&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Upper word saveid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem.&lt;br /&gt;
&lt;br /&gt;
=== 0x567890B4 Archive Path Data Format ===&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;
| [[Mediatypes|Mediatype]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Lower_word_saveid &amp;gt;&amp;gt; 8&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown. Game calculate this using formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0xFFFFFF00 | unknown_b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Title Access Archive Path Data Format ===&lt;br /&gt;
==== Title Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || High-level NCCH content access&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Save data access (high-level, decrypted)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw content (low-level NCCH/SRL) access&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Banner save data access (for DSiWare titles)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FS only: Save data transfer (internally uses generated data from [[FS:BeginSaveDataMove]] as the IV for &amp;quot;Save data access (low-level, encrypted)&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Save data access (low-level, encrypted)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || NCCH Header(s)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;quot;is seeded&amp;quot; check&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seed verify/validate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== NCCH Header Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[NCCH/Extended_Header|Extheader]] (0x0-0x400)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[NCCH/Extended_Header|Extheader]] AccessDesc (0x400-0x800)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Raw [[NCCH#NCCH_Header|NCCH Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || Program ID (Title ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0xB || 0x1 || [[Mediatypes|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&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 !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Title_Access_Type|Title Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x10 || Dynamic data depending on [[Filesystem_services#Title_Access_Type|Title Access Type]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! High Level NCCH Access !! Save Data Access (high level) !! Raw Content !! FS only: Save Data Transfer&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Dynamic data depending on [[Filesystem_services#NCCH_Access_Type|NCCH Access Type]]:&lt;br /&gt;
For ExeFS, (System Menu Data / &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-byte ExeFS file name&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For Header Access,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[Filesystem_services#NCCH_Header_Access_Type|u64, NCCH Header Access Type]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RomFS,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| [[NCCH#Content_Types|u64, Allowed content types flag]]&lt;br /&gt;
(&amp;lt;code&amp;gt;(1 &amp;lt;&amp;lt; allowed_type_a) |&lt;br /&gt;
&lt;br /&gt;
(1 &amp;lt;&amp;lt; allowed_type_b)...&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x10 || 16-byte IV for save data crypto&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Content index from TMD for NAND/SD titles&lt;br /&gt;
NCSD partition index for gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Save data transfer key from [[FS:BeginSaveDataMove]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0xC || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x10 || 16-byte seed for titles that require one, or for validating a seed against the check value in the [[NCCH#NCCH_Header|NCCH Header]]&#039;s check value.&lt;br /&gt;
If the title does not use a seed, this should not be included and size 0x14 should be used instead of 0x24.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For encrypted save data access and banner save data access, the entire 0x10 portion of the dynamic data is left blank.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;is seeded check&amp;quot; NCCH access type opens a virtual 1-byte file that reads either 0 or 1; this value is generated on-the-fly and will be 1 if ncchflags[7] has bit5 set (content uses seed), and 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
For NCCH sections that require a seed (e.g. &amp;lt;code&amp;gt;.code&amp;lt;/code&amp;gt;, RomFS, etc.), the additional seed portion of the low path must be populated with the correct seed. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Seed Verify/Validate&amp;quot; NCCH access type also requires the seed portion of the lowpath. The target NCCH content is opened (with the opened file interface being stubbed, meaning no real reads/writes can be performed on it), and the given seed is used to calculate the seed check hash, and part of it is compared to the check value in the NCCH header. If it matches, opening the &amp;quot;file&amp;quot; succeeds, otherwise 0xD900458C is returned. If attempt is made to use the seed validation type on a content that does not use a seed, error 0xC92044E6 is returned.&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
For FS, this archive functions the same, except for the following limitations:&lt;br /&gt;
&lt;br /&gt;
- Only the title access types &amp;quot;High Level NCCH Access&amp;quot; and &amp;quot;High Level Save Data Access&amp;quot;, and &amp;quot;Save Data Transfer&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For high level NCCH access, the types &amp;quot;RomFS&amp;quot;, &amp;quot;System Menu Data&amp;quot;, &amp;quot;Seeded check&amp;quot;, and &amp;quot;Seed Check/Verify&amp;quot; are allowed.&lt;br /&gt;
&lt;br /&gt;
- For &amp;quot;Seed Check/Verify&amp;quot;, rather than providing the title seed in the file path (as is the case for FSPXI), the seed is retrieved from the seed database (meaning the file lowpath size is always 0x14 for FS).&lt;br /&gt;
&lt;br /&gt;
=== Program Access / SelfNCCH access ===&lt;br /&gt;
&lt;br /&gt;
Provides access to a &amp;quot;merged&amp;quot; archive of a base title and, optionally, a separate update (patch) title.&lt;br /&gt;
&lt;br /&gt;
If no patch title exists, the base title is considered to be the patch title, i.e. turning all &amp;quot;patch&amp;quot; accesses into accesses to the base title.&lt;br /&gt;
&lt;br /&gt;
==== Program Access Type ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description !! Accesses&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt; || Patch title&lt;br /&gt;
|-&lt;br /&gt;
| 2 || System Menu Data (&amp;lt;code&amp;gt;exefs:/icon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/banner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exefs:/logo&amp;lt;/code&amp;gt;) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Save Data (high level, decrypted) || -&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RomFS (all [[NCCH#Content_Type|content types]]) || Base title&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default) || Patch title&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Archive Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Program Handle from [[PXIPM:RegisterProgram]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== File Path ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[Filesystem_services#Program_Access_Type|Program Access Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || Dynamic data depending on [[Filesystem_services#Program_Access_Type|Program Access Type]]:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ExeFS files (System Menu Data, etc.) !! RomFS of base title (all [[NCCH#Content_Type|content types]])&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| 8-character ExeFS filename&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;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, content index of target content&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || padding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== FS Limitations ====&lt;br /&gt;
&lt;br /&gt;
- FSPXI allows all access types.&lt;br /&gt;
&lt;br /&gt;
- When used through fs:LDR by loader, FS only provides access to &amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
- For SelfNCCH access, the only allowed access types are &amp;quot;RomFS (&amp;quot;unspecified&amp;quot; [[NCCH#Content_Type|content type]], the default)&amp;quot; of the Base or Patch title, and &amp;quot;System Menu Data&amp;quot;. Attempting to access &amp;quot;Save Data&amp;quot; results in error 0xE0E046BE, &amp;quot;RomFS (all [[NCCH#Content_Type|content types]])&amp;quot; in 0xF9604784, and &amp;quot;&amp;lt;code&amp;gt;exefs:/.code&amp;lt;/code&amp;gt;&amp;quot; in 0xD9004676.&lt;br /&gt;
&lt;br /&gt;
=== [[RomFS]] ===&lt;br /&gt;
&lt;br /&gt;
Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself.&lt;br /&gt;
&lt;br /&gt;
With FSPXI the returned data for RomFS is the entire RomFS section from the NCCH, starting at the IVFC header.&lt;br /&gt;
&lt;br /&gt;
The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath:&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;
| See above. The only values which FS-module doesn&#039;t allow to be used here are:&lt;br /&gt;
* 0x1: Error 0xE0E046BE.&lt;br /&gt;
* 0x3: Error 0xE0E046BE.&lt;br /&gt;
* 0x4: FS-module executes svcBreak when using this.&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| See above. Not validated by FS-module.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Anti Savegame Restore=&lt;br /&gt;
Anti Savegame Restore, internally referred to as &#039;&#039;Save Data Rollback Prevention&#039;&#039;, is a feature originally implemented in the FS module with [[4.0.0-7]], which prevents the user from restoring previous versions of a savegame image. This feature is not used (in practice) for gamecard games. When an old version of the save is detected, the application will display an error regarding old savegame version, then delete and recreate the save data (similar to when it is corrupted).&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
When creating the savedata, the application generates a secure value (a 64 bit unsigned integer), then stores it in either the [[DISA_and_DIFF#DISA_header|DISA save image header]] or the [[Filesystem_services#Anti_Savegame_Restore_Save_Data|Anti Savegame Restore Save Data]]. The application then uses the anti-savegame-restore commands ([[FS:SetSaveDataSecureValue]], [[FS:GetSaveDataSecureValue]], [[FS:SetOtherSaveDataSecureValue]], [[FS:GetOtherSaveDataSecureValue]], [[FS:SetThisSaveDataSecureValue]], [[FS:GetThisSaveDataSecureValue]], [[FS:SetSaveArchiveSecureValue]] and [[FS:GetSaveArchiveSecureValue]]) to verify the value known to the game for comparison with the value returned by FS, and to update the value in the corresponding storage location.&lt;br /&gt;
&lt;br /&gt;
Each time the application writes to the savegame, the value should be updated by both the application and through FS. Usually, applications update this value by incrementing it. However, generating a new random-number or other methods of updating it can be used as well.&lt;br /&gt;
&lt;br /&gt;
==Anti Savegame Restore Save Data==&lt;br /&gt;
The save data used for this feature is stored in [[System_SaveData|System Save Data]] ID 0x00010011 and contains only one file, named &amp;lt;code&amp;gt;DB&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
===SecureValueKey===&lt;br /&gt;
Depending on which command is used, secure value keys can be interpreted as:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Title ID&lt;br /&gt;
|}&lt;br /&gt;
or:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, Unique ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Main Structure===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1000 || Header&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x1 || u8, version (usually 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32, number of secure value entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0xFF8 || completely unused, padding&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000 || 0x1C000 (8 * 14336) || [[Filesystem_services#SecureValueKey|Secure value keys]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D000 || 0x1C000 (8 * 14336) || u64s, Secure values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Applications using this feature==&lt;br /&gt;
* Animal Crossing: New Leaf&lt;br /&gt;
* Pokemon X &amp;amp; Y&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire&lt;br /&gt;
* Pokemon Omega Ruby &amp;amp; Alpha Sapphire Demo &lt;br /&gt;
* Pokemon Shuffle&lt;br /&gt;
* Super Smash Bros&lt;br /&gt;
* Pokemon Red,Blue and Yellow (GB(C) VC)&lt;br /&gt;
* Rusty&#039;s Real Deal Baseball&lt;br /&gt;
* Megami Meguri&lt;br /&gt;
&lt;br /&gt;
=SEEDDB=&lt;br /&gt;
With [[9.6.0-24|9.6.0-X]] new [[System_SaveData]] with saveID 0001000F was added, this seems to be handled by FS-module itself, probably via the new service-cmds added to fsuser. [[Home Menu]] and [[NIM_Services|NIM]] module have access to those commands.&lt;br /&gt;
&lt;br /&gt;
The SEEDDB savedata contains the title-unique seed-data used for the new [[NCCH]] keyY generation added with FIRM [[9.6.0-24|9.6.0-X]].&lt;br /&gt;
&lt;br /&gt;
= Common Types =&lt;br /&gt;
== MediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Game Card&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemMediaType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| CTR NAND&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| TWL NAND&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| TWL Photo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenFlags ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Read&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Write&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Create&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attributes ==&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;
| 0x1&lt;br /&gt;
| Is Directory&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Hidden&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Is Read-Only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WriteOption ==&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;
| 0x1&lt;br /&gt;
| Flush&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Update Time Stamp&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DirectoryEntry ==&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;
| 0x20C&lt;br /&gt;
| UTF-16 Entry Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20C&lt;br /&gt;
| 0xA&lt;br /&gt;
| 8.3 short filename name&lt;br /&gt;
|-&lt;br /&gt;
| 0x216&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8.3 short filename extension&lt;br /&gt;
|-&lt;br /&gt;
| 0x21A&lt;br /&gt;
| 0x1&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x21B&lt;br /&gt;
| 0x1&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x21C&lt;br /&gt;
| 0x4&lt;br /&gt;
| [[Filesystem_services#Attributes|Attributes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x220&lt;br /&gt;
| 0x8&lt;br /&gt;
| Entry Size&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ArchiveResource ==&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;
| Sector byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Cluster byte-size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Partition capacity in clusters&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Available free space in clusters&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProgramInfo ==&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;
| 0x8&lt;br /&gt;
| Program ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x7&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ProductInfo ==&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;
| 0x10&lt;br /&gt;
| Product Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Company Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| Remaster Version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IntegrityVerificationSeed ==&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;
|  0x10&lt;br /&gt;
|  AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x120&lt;br /&gt;
|  The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ExtSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x8&lt;br /&gt;
| Save ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SystemSaveDataInfo ==&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;
| [[Filesystem_services#DataAccessPath|DataAccessPath]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Save ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueSlot ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| SD Application&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SecureValueEntry ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || When used as an input entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || This entry should be removed.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || This entry should be updated with the given value.&lt;br /&gt;
|}&lt;br /&gt;
When returned from a command:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || No entry with the given slot and title ID was found, or: this entry is unused.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || The entry with the given slot and title ID was found, or: this entry is used.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x3 || padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || u64, Secure Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TitleTag ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Magic, &amp;lt;code&amp;gt;PREP&amp;lt;/code&amp;gt; (PREPurchase install)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || s32, Release date year&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1 || u8, Release date month&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || 0x1 || u8, Release date day&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || 0x2 || u16, Country code&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || u32, Seed status (0: not downloaded yet, 1: last download attempt failed, 2: seed installed successfully)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || Result code from last seed installation attempt &lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || Support error code from last seed installation attempt&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || 0x68 || reserved padding (unused)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBaudRate ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 512KHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 4MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 8MHz&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 16MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CardSpiBusMode ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1-bit&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 4-bit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SpecialContentType ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
!  Found in&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| CTR (Old3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| Manual&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| DLP Child&lt;br /&gt;
| Gamecards, Digital titles&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| KTR (New3DS) Update Partition&lt;br /&gt;
| Gamecards&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DeviceMoveContext ==&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;
|  0x10&lt;br /&gt;
|  IVs (ID0 of source console)&lt;br /&gt;
|-&lt;br /&gt;
|  0x10&lt;br /&gt;
|  0x10&lt;br /&gt;
|  Encrypt Parameter (used to calculate the IV for encryption)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
See [[Filesystem_services_PXI]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=System_SaveData&amp;diff=23607</id>
		<title>System SaveData</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=System_SaveData&amp;diff=23607"/>
		<updated>2025-07-01T09:41:13Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* System Module Savegames */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Savegames stored in NAND are located at [[Flash_Filesystem|nand:/data/&amp;lt;ID0&amp;gt;/sysdata/&amp;lt;SaveID-Low&amp;gt;/&amp;lt;SaveID-High&amp;gt;]], where SaveID-High is the filename. SaveID-High is normally 00000000.&lt;br /&gt;
&lt;br /&gt;
Access to system savedata via [[Filesystem_services|fs:USER]] is determined by the [[NCCH#CXI|exheader_storageinfo]] accessinfo and systemsavedataid. Most ARM11 processes using fs:USER only have access to the SaveIDs specified by systemsavedataid, when a certain accessinfo bit is set the process can access all system-savedata however. The 8-byte systemsavedataid is two SaveID-Low words which the process has access to, normally only the first word is used. When the process doesn&#039;t have access to any system-savedata via systemsavedataid, systemsavedataid is all-zero.&lt;br /&gt;
&lt;br /&gt;
=NAND Savegames=&lt;br /&gt;
The SaveID for system modules is usually 0x00010000 | [[Titles|uniqueID]]. The SaveID for other system processes (like applications) is 0x00020000 | [[Titles|uniqueID]].&lt;br /&gt;
&lt;br /&gt;
==System Module Savegames==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SaveID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001000F&lt;br /&gt;
| [[Filesystem_services|FS]] module savedata, used for [[Filesystem_services#SEEDDB|SEEDDB]] and [[Filesystem_services#TITLETAG|TITLETAG]] storage.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010011&lt;br /&gt;
| [[Filesystem_services|FS]] module savedata, used for [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010015&lt;br /&gt;
| [[Application_Manager_Services|AM]] module savedata&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010017&lt;br /&gt;
| [[Config Savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010022&lt;br /&gt;
| [[PTM]] [[PTM_Savegame|savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010026&lt;br /&gt;
| [[StreetPass|CECD]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001002C&lt;br /&gt;
| [[NIM_Services|NIM]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010032&lt;br /&gt;
| [[FRD_Savegame|Friends module savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010034&lt;br /&gt;
| [[SpotPass|BOSS]] module [[BOSS Savegame|savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010035&lt;br /&gt;
| News module savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010038&lt;br /&gt;
| Act module savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| [[NFC_Services|NFC]] module savegame&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==System application and applet savegames==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! JPN SaveID&lt;br /&gt;
! USA SaveID&lt;br /&gt;
! EUR SaveID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C5&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| &amp;quot;error&amp;quot; applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| 0x0002008F&lt;br /&gt;
| 0x00020098&lt;br /&gt;
| [[Home Menu]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020086&lt;br /&gt;
| 0x00020092&lt;br /&gt;
| 0x0002009B&lt;br /&gt;
| Instruction Manual applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020087&lt;br /&gt;
| 0x00020093&lt;br /&gt;
| 0x0002009C&lt;br /&gt;
| Game Notes applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020088&lt;br /&gt;
| 0x00020094&lt;br /&gt;
| 0x0002009D&lt;br /&gt;
| Old3DS/New3DS [[Internet Browser]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002008D&lt;br /&gt;
| 0x00020096&lt;br /&gt;
| 0x0002009F&lt;br /&gt;
| Friend List applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200BB&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Additional savedata for the New3DS [[Internet Browser]]. This only contains &amp;quot;t.bin&amp;quot; with filesize 0xadf80. This contains all browser history: each entry has the URL, UTF-16 title string, and icon gfx. This includes old pages which are not currently open in the browser as tabs?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200BC&lt;br /&gt;
| 0x000200BD&lt;br /&gt;
| 0x000200BE&lt;br /&gt;
| olv applet savegame (Miiverse)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C6&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| mint applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020200&lt;br /&gt;
| 0x00020210&lt;br /&gt;
| 0x00020220&lt;br /&gt;
| [[System Settings]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020202&lt;br /&gt;
| 0x00020212&lt;br /&gt;
| 0x00020222&lt;br /&gt;
| [[Activity Log]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020204&lt;br /&gt;
| 0x00020214&lt;br /&gt;
| 0x00020224&lt;br /&gt;
| [[Nintendo 3DS Camera]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020205&lt;br /&gt;
| 0x00020215&lt;br /&gt;
| 0x00020225&lt;br /&gt;
| [[Nintendo 3DS Sound]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020207&lt;br /&gt;
| 0x00020217&lt;br /&gt;
| 0x00020227&lt;br /&gt;
| [[Mii Maker]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020208&lt;br /&gt;
| 0x00020218&lt;br /&gt;
| 0x00020228&lt;br /&gt;
| [[StreetPass Mii Plaza]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020209&lt;br /&gt;
| 0x00020219&lt;br /&gt;
| 0x00020229&lt;br /&gt;
| [[eShop]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020A&lt;br /&gt;
| 0x0002021A&lt;br /&gt;
| 0x0002022A&lt;br /&gt;
| [[System Transfer]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020B&lt;br /&gt;
| 0x0002021B&lt;br /&gt;
| 0x0002022B&lt;br /&gt;
| [[Nintendo Zone]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020D&lt;br /&gt;
| 0x0002021D&lt;br /&gt;
| 0x0002022D&lt;br /&gt;
| [[Face Raiders]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020E&lt;br /&gt;
| 0x0002021E&lt;br /&gt;
| 0x0002022E&lt;br /&gt;
| [[AR Games]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x000202BF&lt;br /&gt;
| 0x000202C0&lt;br /&gt;
| 0x000202C1&lt;br /&gt;
| act (NNID settings) application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020231&lt;br /&gt;
| 0x00020241&lt;br /&gt;
| 0x00020251&lt;br /&gt;
| [[microSD Management]] application savegame&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=System_SaveData&amp;diff=23606</id>
		<title>System SaveData</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=System_SaveData&amp;diff=23606"/>
		<updated>2025-07-01T09:40:50Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: add table entry for 0x0001000F&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Savegames stored in NAND are located at [[Flash_Filesystem|nand:/data/&amp;lt;ID0&amp;gt;/sysdata/&amp;lt;SaveID-Low&amp;gt;/&amp;lt;SaveID-High&amp;gt;]], where SaveID-High is the filename. SaveID-High is normally 00000000.&lt;br /&gt;
&lt;br /&gt;
Access to system savedata via [[Filesystem_services|fs:USER]] is determined by the [[NCCH#CXI|exheader_storageinfo]] accessinfo and systemsavedataid. Most ARM11 processes using fs:USER only have access to the SaveIDs specified by systemsavedataid, when a certain accessinfo bit is set the process can access all system-savedata however. The 8-byte systemsavedataid is two SaveID-Low words which the process has access to, normally only the first word is used. When the process doesn&#039;t have access to any system-savedata via systemsavedataid, systemsavedataid is all-zero.&lt;br /&gt;
&lt;br /&gt;
=NAND Savegames=&lt;br /&gt;
The SaveID for system modules is usually 0x00010000 | [[Titles|uniqueID]]. The SaveID for other system processes (like applications) is 0x00020000 | [[Titles|uniqueID]].&lt;br /&gt;
&lt;br /&gt;
==System Module Savegames==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SaveID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001000F&lt;br /&gt;
| [[Filesystem_services|FS]] module savedata, used for [[Filesystem_services#SEEDDB|SEEDDB]] and [[Filesystem_services#TITLETAG|TITLETAG]] storage.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010011&lt;br /&gt;
| [[Filesystem_services|FS]] module savedata, used for [[Anti Savegame Restore]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010015&lt;br /&gt;
| [[Application_Manager_Services|AM]] module savedata&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010017&lt;br /&gt;
| [[Config Savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010022&lt;br /&gt;
| [[PTM]] [[PTM_Savegame|savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010026&lt;br /&gt;
| [[StreetPass|CECD]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001002C&lt;br /&gt;
| [[NIM_Services|NIM]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010032&lt;br /&gt;
| [[FRD_Savegame|Friends module savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010034&lt;br /&gt;
| [[SpotPass|BOSS]] module [[BOSS Savegame|savegame]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010035&lt;br /&gt;
| News module savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010038&lt;br /&gt;
| Act module savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| [[NFC_Services|NFC]] module savegame&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==System application and applet savegames==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! JPN SaveID&lt;br /&gt;
! USA SaveID&lt;br /&gt;
! EUR SaveID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C5&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| &amp;quot;error&amp;quot; applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| 0x0002008F&lt;br /&gt;
| 0x00020098&lt;br /&gt;
| [[Home Menu]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020086&lt;br /&gt;
| 0x00020092&lt;br /&gt;
| 0x0002009B&lt;br /&gt;
| Instruction Manual applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020087&lt;br /&gt;
| 0x00020093&lt;br /&gt;
| 0x0002009C&lt;br /&gt;
| Game Notes applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020088&lt;br /&gt;
| 0x00020094&lt;br /&gt;
| 0x0002009D&lt;br /&gt;
| Old3DS/New3DS [[Internet Browser]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002008D&lt;br /&gt;
| 0x00020096&lt;br /&gt;
| 0x0002009F&lt;br /&gt;
| Friend List applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200BB&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Additional savedata for the New3DS [[Internet Browser]]. This only contains &amp;quot;t.bin&amp;quot; with filesize 0xadf80. This contains all browser history: each entry has the URL, UTF-16 title string, and icon gfx. This includes old pages which are not currently open in the browser as tabs?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200BC&lt;br /&gt;
| 0x000200BD&lt;br /&gt;
| 0x000200BE&lt;br /&gt;
| olv applet savegame (Miiverse)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C6&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| Same as JPN&lt;br /&gt;
| mint applet savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020200&lt;br /&gt;
| 0x00020210&lt;br /&gt;
| 0x00020220&lt;br /&gt;
| [[System Settings]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020202&lt;br /&gt;
| 0x00020212&lt;br /&gt;
| 0x00020222&lt;br /&gt;
| [[Activity Log]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020204&lt;br /&gt;
| 0x00020214&lt;br /&gt;
| 0x00020224&lt;br /&gt;
| [[Nintendo 3DS Camera]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020205&lt;br /&gt;
| 0x00020215&lt;br /&gt;
| 0x00020225&lt;br /&gt;
| [[Nintendo 3DS Sound]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020207&lt;br /&gt;
| 0x00020217&lt;br /&gt;
| 0x00020227&lt;br /&gt;
| [[Mii Maker]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020208&lt;br /&gt;
| 0x00020218&lt;br /&gt;
| 0x00020228&lt;br /&gt;
| [[StreetPass Mii Plaza]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020209&lt;br /&gt;
| 0x00020219&lt;br /&gt;
| 0x00020229&lt;br /&gt;
| [[eShop]] application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020A&lt;br /&gt;
| 0x0002021A&lt;br /&gt;
| 0x0002022A&lt;br /&gt;
| [[System Transfer]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020B&lt;br /&gt;
| 0x0002021B&lt;br /&gt;
| 0x0002022B&lt;br /&gt;
| [[Nintendo Zone]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020D&lt;br /&gt;
| 0x0002021D&lt;br /&gt;
| 0x0002022D&lt;br /&gt;
| [[Face Raiders]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002020E&lt;br /&gt;
| 0x0002021E&lt;br /&gt;
| 0x0002022E&lt;br /&gt;
| [[AR Games]] savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x000202BF&lt;br /&gt;
| 0x000202C0&lt;br /&gt;
| 0x000202C1&lt;br /&gt;
| act (NNID settings) application savegame&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020231&lt;br /&gt;
| 0x00020241&lt;br /&gt;
| 0x00020251&lt;br /&gt;
| [[microSD Management]] application savegame&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:GetSaveArchiveSecureValue&amp;diff=23605</id>
		<title>FS:GetSaveArchiveSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:GetSaveArchiveSecureValue&amp;diff=23605"/>
		<updated>2025-07-01T09:28:27Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x876|3|0}}&lt;br /&gt;
{{IPC/RequestEntryRange|2|u64, Save data [[Filesystem_services#Archives|Archive]] handle}}&lt;br /&gt;
{{IPC/RequestEntry|u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x876|5|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEntry|bool, secure value found}}&lt;br /&gt;
{{IPC/RequestEntry|bool, corresponding save archive is from a gamecart (set regardless of whether or not the secure value was found)}}&lt;br /&gt;
{{IPC/RequestEntryRange|2|u64, Secure value}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This command is identical to [[FS:GetOtherSaveDataSecureValue]], but instead of specifying the title ID and mediatype manually, these parameters are retrieved through the given save data archive handle using internal state data.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:SetSaveArchiveSecureValue&amp;diff=23604</id>
		<title>FS:SetSaveArchiveSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:SetSaveArchiveSecureValue&amp;diff=23604"/>
		<updated>2025-07-01T09:28:19Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x875|5|0}}&lt;br /&gt;
{{IPC/RequestEntryRange|2|u64, Save data [[Filesystem_services#Archives|Archive]] handle}}&lt;br /&gt;
{{IPC/RequestEntry|u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]}}&lt;br /&gt;
{{IPC/RequestEntryRange|2|u64, Secure value}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x875|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This command is identical to [[FS:SetOtherSaveDataSecureValue]], but instead of specifying the title ID and mediatype manually, these parameters are retrieved through the given save data archive handle using internal state data.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:GetThisSaveDataSecureValue&amp;diff=23603</id>
		<title>FS:GetThisSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:GetThisSaveDataSecureValue&amp;diff=23603"/>
		<updated>2025-07-01T09:16:29Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x86F|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x86F|5|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEntry|bool, whether or not the secure value was found}}&lt;br /&gt;
{{IPC/RequestEntry|bool, whether or not the title is from a gamecart (regardless of whether or not the secure value was found)}}&lt;br /&gt;
{{IPC/RequestEntryRange|2|u64, Secure value}}&lt;br /&gt;
&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Gets the secure value of the title corresponding to the current session.&lt;br /&gt;
&lt;br /&gt;
If the caller process is on a game card, the secure value is read from the [[DISA_and_DIFF#DISA_header|DISA save image]]&#039;s header.&lt;br /&gt;
Otherwise, the secure value is read from the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:SetThisSaveDataSecureValue&amp;diff=23602</id>
		<title>FS:SetThisSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:SetThisSaveDataSecureValue&amp;diff=23602"/>
		<updated>2025-07-01T09:16:02Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x86E|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|u32, [[Filesystem_services#SecureValueSlot|Secure Value Slot]]}}&lt;br /&gt;
{{IPC/RequestEntryRange|2|u64, value}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x86E|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Sets the secure value of the title corresponding to the current session.&lt;br /&gt;
&lt;br /&gt;
If the caller process is on a game card, the secure value is written to the [[DISA_and_DIFF#DISA_header|DISA save image]]&#039;s header.&lt;br /&gt;
Otherwise, the secure value is written to the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:GetSaveDataSecureValue&amp;diff=23601</id>
		<title>FS:GetSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:GetSaveDataSecureValue&amp;diff=23601"/>
		<updated>2025-07-01T09:12:53Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &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 [0x086600C0]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Title Unique ID (0 = current)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| u8, Title Variation (0 = current)&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;
| u8, 0 = doesn&#039;t exist, 1 = exists&lt;br /&gt;
|-&lt;br /&gt;
| 3-4&lt;br /&gt;
| u64, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Gets the secure value for a specific title (or current title) in the specified slot. This command will read from the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data.&lt;br /&gt;
&lt;br /&gt;
If appropriate FS permissions are not set in the caller processes&#039; exheader, this command will only run if the save data ID for the specified title is present in the exheader.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:SetSaveDataSecureValue&amp;diff=23600</id>
		<title>FS:SetSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:SetSaveDataSecureValue&amp;diff=23600"/>
		<updated>2025-07-01T09:12:45Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &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 [0x08650140]&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| u64, Value&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Title Unique ID (0 = current)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| u8, Title Variation (0 = current)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Sets the secure value for a specified title (or the current title) in the specified slot. This command will write to the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data.&lt;br /&gt;
&lt;br /&gt;
If appropriate FS permissions are not set in the caller processes&#039; exheader, this command will only run if the save data ID for the specified title is present in the exheader.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:GetOtherSaveDataSecureValue&amp;diff=23599</id>
		<title>FS:GetOtherSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:GetOtherSaveDataSecureValue&amp;diff=23599"/>
		<updated>2025-07-01T09:09:03Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x86C|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, [[Filesystem_services#MediaType|Media Type]]}}&lt;br /&gt;
{{IPC/RequestEntry|u32, Unique ID}}&lt;br /&gt;
{{IPC/RequestEntry|u32, Entry count}}&lt;br /&gt;
{{IPC/MapPointerW|Output [[Filesystem_services#SecureValueEntry|SecureValueEntry]] buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x086C|2|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEntry|u32, Number of read entries}}&lt;br /&gt;
{{IPC/MapPointerW|Output [[Filesystem_services#SecureValueEntry|SecureValueEntry]] buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Queries the secure value(s) of another title.&lt;br /&gt;
&lt;br /&gt;
This command will, by default, read from the secure value section of the [[DISA_and_DIFF#DISA_Header|DISA save image&#039;s header]].&lt;br /&gt;
&lt;br /&gt;
However, it is possible to force this command to read from the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data by specifying media type 100 (the meaning of this media type is unknown and is not used elsewhere in FS).&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:SetOtherSaveDataSecureValue&amp;diff=23598</id>
		<title>FS:SetOtherSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:SetOtherSaveDataSecureValue&amp;diff=23598"/>
		<updated>2025-07-01T08:59:53Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x086B|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, [[Filesystem_services#MediaType|Media Type]]}}&lt;br /&gt;
{{IPC/RequestEntry|u32, Unique ID}}&lt;br /&gt;
{{IPC/RequestEntry|u32, Entry count}}&lt;br /&gt;
{{IPC/MapPointerR|Input [[Filesystem_services#SecureValueEntry|SecureValueEntry]] buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x086B|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/MapPointerR|Input [[Filesystem_services#SecureValueEntry|SecureValueEntry]] buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Updates or removes the secure value(s) of another title.&lt;br /&gt;
&lt;br /&gt;
This command will, by default, write to the secure value section of the [[DISA_and_DIFF#DISA_Header|DISA save image&#039;s header]].&lt;br /&gt;
&lt;br /&gt;
However, it is possible to force this command to write to the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data by specifying media type 100 (the meaning of this media type is unknown and is not used elsewhere in FS).&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:GetSaveDataSecureValue&amp;diff=23597</id>
		<title>FS:GetSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:GetSaveDataSecureValue&amp;diff=23597"/>
		<updated>2025-07-01T08:55:45Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &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 [0x086600C0]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Title Unique ID (0 = current)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| u8, Title Variation (0 = current)&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;
| u8, 0 = doesn&#039;t exist, 1 = exists&lt;br /&gt;
|-&lt;br /&gt;
| 3-4&lt;br /&gt;
| u64, Value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Gets the secure value for a specific title (or current title) in the specified slot. This command will read from the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=FS:SetSaveDataSecureValue&amp;diff=23596</id>
		<title>FS:SetSaveDataSecureValue</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=FS:SetSaveDataSecureValue&amp;diff=23596"/>
		<updated>2025-07-01T08:54:32Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &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 [0x08650140]&lt;br /&gt;
|-&lt;br /&gt;
| 1-2&lt;br /&gt;
| u64, Value&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| [[Filesystem_services#SecureValueSlot|Secure Value Slot]]&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Title Unique ID (0 = current)&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| u8, Title Variation (0 = current)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Sets the secure value for a specified title (or the current title) in the specified slot. This command will write to the [[Filesystem_services#Anti_Savegame_Restore|Anti Savegame Restore]] save data.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=DISA_and_DIFF&amp;diff=23595</id>
		<title>DISA and DIFF</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=DISA_and_DIFF&amp;diff=23595"/>
		<updated>2025-06-30T22:01:50Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* DISA Header structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes DISA and DIFF format as the underlying container of [[Savegames]], [[Extdata]] and [[Title Database]]. For further format specification of the inner data, please refer to their own page.&lt;br /&gt;
&lt;br /&gt;
All data in this page is little-endian. All &amp;quot;unused / padding&amp;quot; fields can contain uninitialized data unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
DISA and DIFF are two container formats. They are very similar and are used for various purposes in 3DS. Here is a summary table of their usage, the CMAC type and the AES key slot used (the meaning of these is explained in the next section):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Usage&lt;br /&gt;
! Media&lt;br /&gt;
! Container format&lt;br /&gt;
! [[#AES CMAC|CMAC type]]&lt;br /&gt;
! CMAC [[AES Registers|Keyslot]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Savegames]]&lt;br /&gt;
| Gamecard&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-NOR0|CTR-NOR0]]&lt;br /&gt;
| 0x19 / 0x33&lt;br /&gt;
|-&lt;br /&gt;
| [[Savegames]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-SIGN|CTR-SIGN]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[System SaveData]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-SYS0|CTR-SYS0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Extdata|Private Extdata]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-EXT0|CTR-EXT0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Extdata|Shared Extdata]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-EXT0|CTR-EXT0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Title Database]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-9DB0|CTR-9DB0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Title Database]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-9DB0|CTR-9DB0]]&lt;br /&gt;
| 0x0B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Encryption ==&lt;br /&gt;
&lt;br /&gt;
DISA and DIFF formats don&#039;t have their own encryption specification. They follow the encryption method defined by their media:&lt;br /&gt;
&lt;br /&gt;
* Gamecard savegames have special wear leveling + encryption layers. See [[Savegames]] for detail.&lt;br /&gt;
* Files on SD follow [[SD Filesystem|the general SD filesystem encryption rule]].&lt;br /&gt;
* Files on NAND are in cleartext, after decrypting [[Flash Filesystem|the NAND partition encryption]].&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
A DISA / DIFF file consists of the following components:&lt;br /&gt;
&lt;br /&gt;
* 0x100-byte AES CMAC&lt;br /&gt;
* 0x100-byte Header&lt;br /&gt;
* Secondary partition table&lt;br /&gt;
** Contains one or two partition descriptors, depending on the number of partitions.&lt;br /&gt;
* Primary partition table&lt;br /&gt;
** Same layout as the secondary one&lt;br /&gt;
* Partition A&lt;br /&gt;
* Partition B (optional)&lt;br /&gt;
** can only exist for DISA.&lt;br /&gt;
&lt;br /&gt;
== AES CMAC ==&lt;br /&gt;
&lt;br /&gt;
The AES CMAC is located at the beginning of the DISA / DIFF image, and it is 0x10 long. The rest 0xF0 bytes before the header are unused.&lt;br /&gt;
&lt;br /&gt;
The key used for the AES CMAC is generated by the [[AES Registers|hardware key engine]]. See the keyslot it uses in the table above.&lt;br /&gt;
&lt;br /&gt;
The data being authenticated by the AES CMAC is a 0x20-byte SHA-256 hash of a data block. The data block has different content formats among CMAC types. All types of data block contain a copy or a hash of the header, which is the start of the the rest of the verification chain, so the AES CMAC effectively authenticates the whole save image. Each type of data block is explained below.&lt;br /&gt;
&lt;br /&gt;
=== CTR-NOR0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for gamecard savegames. It is 0x28-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-NOR0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 of the following 0x108-byte block&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SAV0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-SIGN ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for SD savegames. It is 0x30-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SIGN&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 of the following 0x108-byte block&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SAV0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CTR-SYS0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for NAND system save. It is 0x110-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SYS0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Save ID. The higher word is always zero&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-EXT0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for extdata. It is 0x11C-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-EXT0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Extdata ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| 0 for Quota.dat, 1 otherwise&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| ID in the device file name. 0 for Quota.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| ID in the device directory name that the file is in. 0 for Quota.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DIFF header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-9DB0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for title database. It is 0x10C-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-9DB0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 4&lt;br /&gt;
| Database ID. Each .db file has its own ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DIFF header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&lt;br /&gt;
The header located at offset 0x100 defines the rest components of the file (partitions and their tables). All offsets in the header are relative to the beginning of the DISA/DIFF file, except for partition descriptor offsets, which are relative to the beginning of the (active) partition table. DISA and DIFF have different header format.&lt;br /&gt;
&lt;br /&gt;
=== DISA header ===&lt;br /&gt;
&lt;br /&gt;
==== SaveDataSecureValue ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Length !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Anti_Savegame_Restore|Secure Value]] slot&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || u64, [[Anti_Savegame_Restore|Secure Value]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DISA Header structure ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DISA&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x40000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 4&lt;br /&gt;
| Partition count, 1 or 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| Secondary partition table offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Primary partition table offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Partition table size&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A descriptor offset in the partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B descriptor offset in the partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A size&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B size&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 1&lt;br /&gt;
| Active partition table, 0 = primary, 1 = secondary&lt;br /&gt;
|-&lt;br /&gt;
| 0x69&lt;br /&gt;
| 1&lt;br /&gt;
| Number of used [[Anti_Savegame_Restore|Save Data Secure Value]] entries in the DISA header&lt;br /&gt;
|-&lt;br /&gt;
| 0x6A&lt;br /&gt;
| 2&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 over the active partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x30 (0xC * 0x4)&lt;br /&gt;
| [[DISA_and_DIFF#SaveDataSecureValue|Save Data Secure Value]] entries (4)&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unused randomly generated u64 value.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC4&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* When the partition count is 1, there is no partition B and all of its related fields are zero.&lt;br /&gt;
&lt;br /&gt;
=== DIFF header ===&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DIFF&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x30000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Secondary partition table/descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| Primary partition table/descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Partition table/descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Partition (A) offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition (A) size&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| Active partition descriptor, 0 = primary, 1 = secondary&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 over the active partition table/descriptor&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 8&lt;br /&gt;
| Unique identifier&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0xA4&lt;br /&gt;
| Unused, might contain leftover data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* Since DIFF can only contain one partition, a partition table can only have one partition descriptor, so they become the same concept here.&lt;br /&gt;
* See [[Extdata]] for its usage of the unique identifier field. For title database files, this field is zero.&lt;br /&gt;
&lt;br /&gt;
== Partition table &amp;amp;amp; partition descriptor ==&lt;br /&gt;
&lt;br /&gt;
There are two partition tables, but only one of them is active. When operating on a DISA / DIFF file, 3DS FS alternately activate one of the two tables, presumably for data backup or atomic file writing. A newly created DISA / DIFF file may have entirely uninitialized data in the inactive partition table.&lt;br /&gt;
&lt;br /&gt;
One partition table contains one or two partition descriptors , each of which describes the layout of one partition. A partition descriptor contains the following components:&lt;br /&gt;
&lt;br /&gt;
* DIFI header&lt;br /&gt;
* IVFC descriptor&lt;br /&gt;
* DPFS descriptor&lt;br /&gt;
* Partition master hash&lt;br /&gt;
&lt;br /&gt;
=== DIFI header ===&lt;br /&gt;
&lt;br /&gt;
The DIFI header locates at the beginning of a partition descriptor. This header defines the rest components of the partition descriptor (IVFC descriptor, DPFS descriptor and partition master hash). All offsets are relative to the beginning of the partition descriptor, except for &amp;lt;code&amp;gt;External IVFC level 4 offset&amp;lt;/code&amp;gt;, which is relative to the beginning of the partition.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DIFI&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x10000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition hash offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| Partition hash size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 1&lt;br /&gt;
| If none zero, enable external IVFC level 4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| 1&lt;br /&gt;
| DPFS tree level 1 selector&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A&lt;br /&gt;
| 2&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 8&lt;br /&gt;
| External IVFC level 4 offset (zero if external IVFC level 4 disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* The meaning of fields after 0x38 are explained in the section [[#Partition]]&lt;br /&gt;
&lt;br /&gt;
=== IVFC descriptor ===&lt;br /&gt;
&lt;br /&gt;
This header defines each level of IVFC tree (explained in the section [[#Partition]]). All offsets are relative to the beginning of DPFS level 3.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;IVFC&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x20000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Master hash size = partition master hash size in DIFI header&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 1 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 1 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 2 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 2 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 3 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 3 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 4 offset (unused if external IVFC level 4 enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 4 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor size? The value is usually 0x78&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DPFS descriptor ===&lt;br /&gt;
&lt;br /&gt;
This header defines each level of DPFS tree (explained in the section [[#Partition]]). All offsets are relative to the beginning of the partition.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DPFS&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x10000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 1 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 1 block size in log2 (unused?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 2 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 2 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 3 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 3 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Partition master hash ===&lt;br /&gt;
&lt;br /&gt;
This is a SHA-256 hash list over IVFC level 1. See [[#IVFC tree]] for explanation.&lt;br /&gt;
&lt;br /&gt;
== Partition ==&lt;br /&gt;
&lt;br /&gt;
A partition can have two types of layout. This is determined by the field DIFF + 0x38 (&amp;lt;code&amp;gt;Enable external IVFC level 4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The layout type 0 (external IVFC level 4 disabled) contains&lt;br /&gt;
&lt;br /&gt;
* DPFS level 1&lt;br /&gt;
* DPFS level 2&lt;br /&gt;
* DPFS level 3, and inside&lt;br /&gt;
** IVFC level 1&lt;br /&gt;
** IVFC level 2&lt;br /&gt;
** IVFC level 3&lt;br /&gt;
** IVFC level 4 (the actual content data)&lt;br /&gt;
&lt;br /&gt;
The layout type 1 (external IVFC level 4 enabled) contains&lt;br /&gt;
&lt;br /&gt;
* DPFS level 1&lt;br /&gt;
* DPFS level 2&lt;br /&gt;
* DPFS level 3, and inside&lt;br /&gt;
** IVFC level 1&lt;br /&gt;
** IVFC level 2&lt;br /&gt;
** IVFC level 3&lt;br /&gt;
* IVFC level 4 (the actual content data, note that this is out side DPFS level 3)&lt;br /&gt;
&lt;br /&gt;
=== DPFS tree ===&lt;br /&gt;
&lt;br /&gt;
Everything inside the DPFS tree comes in pairs, and at one time only one of a pair is active. The tree is probably designed for atomic writing: for a file writing operation, it writes to the inactive part, then commits the data by switching a bit to activate it.&lt;br /&gt;
&lt;br /&gt;
Each level of DPFS tree consists of a pair of chunks. The size of one chunk is defined as it in the DPFS descriptor, so the total size of a level is actually twice as large as the size recorded in the descriptor. For level 1 and 2, each chunk is a bit array, in which each bit corresponds to a block in the next level (the block size of the next level is also defined in the DPFS descriptor). This bit indicates which one of the pair in the next level is active for this block: 0 means the first one and 1 means the second one. The active chunk of level 1 is selected by &amp;lt;code&amp;gt;DPFS tree level 1 selector&amp;lt;/code&amp;gt; in the DIFI header. The bit array is encoded in u32 array, with MSB as the first bit of each 32 bits.&lt;br /&gt;
&lt;br /&gt;
To access data in level 3, one needs to check the bits in level 1 and level 2 to know which chunk of level 3 is active for the accessed location. For example, for a following configuration:&lt;br /&gt;
&lt;br /&gt;
* Level 1: size = 4 bytes = 32 bits&lt;br /&gt;
* Level 2: size = 0x380 bytes = 0x1C00 bits, block size = 0x80 bytes&lt;br /&gt;
* Level 3: size = 0x1B7F000, block size = 0x1000, block size = 0x1000 bytes&lt;br /&gt;
&lt;br /&gt;
if one want to read byte at 0x1234567 of level 3, the following calculation is performed:&lt;br /&gt;
&lt;br /&gt;
* get level 2 bit index &amp;lt;code&amp;gt;0x1234567 / 0x1000 = 0x1234&amp;lt;/code&amp;gt;, and its byte location &amp;lt;code&amp;gt;0x1234 / 8 = 0x246&amp;lt;/code&amp;gt;&lt;br /&gt;
* get level 1 bit index &amp;lt;code&amp;gt;0x246 / 0x80 = 4&amp;lt;/code&amp;gt;&lt;br /&gt;
* get &amp;lt;code&amp;gt;level1_selector&amp;lt;/code&amp;gt; from DIFI header&lt;br /&gt;
* read &amp;lt;code&amp;gt;level2_selector = Level1[level1_selector].bits[4]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* read &amp;lt;code&amp;gt;level3_selector = Level2[level2_selector].bits[0x1234]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* read &amp;lt;code&amp;gt;data = Level3[level3_selector].bytes[0x1234567]&amp;lt;/code&amp;gt; as the final data&lt;br /&gt;
* in the code above &amp;lt;code&amp;gt;Levelx[k]&amp;lt;/code&amp;gt; means the &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;-th chunk in level &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;k = 0, 1&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;.bits[n]&amp;lt;/code&amp;gt; is expanded to &amp;lt;code&amp;gt;(.u32_array[n / 32] &amp;amp;gt;&amp;amp;gt; (31 - n % 32)) &amp;amp;amp; 1&amp;lt;/code&amp;gt; as the bit array is encoded in u32 array.&lt;br /&gt;
&lt;br /&gt;
Effectively, the active data is scattered among the two level 3 chunk. One can assemble the whole active level 3 image following the same rule.&lt;br /&gt;
&lt;br /&gt;
=== IVFC tree ===&lt;br /&gt;
&lt;br /&gt;
The IVFC tree is used for data verification. It is very similar to the IVFC tree in [[RomFS]], except that it has an additional level here. For level 1, 2 and 3, each level is a list of SHA-256 hash, of which each corresponds to a block of the next level which is zero-padded to align the block size (the block size of the next level is defined in the IVFC descriptor).&lt;br /&gt;
&lt;br /&gt;
The partition master hash in the partition descriptor can be seen as IVFC level 0, which hashes level 1 following the same rule. The master hash is usually 0x20 long, consisting only one hash. This is because most DISA / DIFF files are not large enough to have multiple hashes on the top level, which isn&#039;t the case for some title database files.&lt;br /&gt;
&lt;br /&gt;
However, not all data is hashed - only ranges that have been written with valid data are properly hashed.&lt;br /&gt;
&lt;br /&gt;
Level 4 is the actual content of the partition, which is what the container format essentially contains.&lt;br /&gt;
&lt;br /&gt;
== Extracting content from a DISA / DIFF container ==&lt;br /&gt;
&lt;br /&gt;
* Find the active partition table and the partition(s).&lt;br /&gt;
* Unwrap DPFS tree of partition(s) by reconstructing active data.&lt;br /&gt;
* Unwrap IVFC tree. Either take out level 4 directly, or, better, verify all the hashes and poison the data that is not properly hashed.&lt;br /&gt;
* The IVFC level 4 is the inner content of the file. The format of it varies among different usage. Refer their own page for further extraction.&lt;br /&gt;
&lt;br /&gt;
== Chain of trust ==&lt;br /&gt;
&lt;br /&gt;
* AES CMAC verifies the header.&lt;br /&gt;
* The header verifies the active partition table via the table hash.&lt;br /&gt;
* In the partition table, each descriptor verifies level 1 of its IVFC tree via the master hash.&lt;br /&gt;
* Each IVFC level verifies the next level, until the level 4, which is the inner content.&lt;br /&gt;
&lt;br /&gt;
== Summary diagram ==&lt;br /&gt;
&lt;br /&gt;
[[File:Disa-diff.png]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=DISA_and_DIFF&amp;diff=23594</id>
		<title>DISA and DIFF</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=DISA_and_DIFF&amp;diff=23594"/>
		<updated>2025-06-30T20:48:20Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* DISA Header structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes DISA and DIFF format as the underlying container of [[Savegames]], [[Extdata]] and [[Title Database]]. For further format specification of the inner data, please refer to their own page.&lt;br /&gt;
&lt;br /&gt;
All data in this page is little-endian. All &amp;quot;unused / padding&amp;quot; fields can contain uninitialized data unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
DISA and DIFF are two container formats. They are very similar and are used for various purposes in 3DS. Here is a summary table of their usage, the CMAC type and the AES key slot used (the meaning of these is explained in the next section):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Usage&lt;br /&gt;
! Media&lt;br /&gt;
! Container format&lt;br /&gt;
! [[#AES CMAC|CMAC type]]&lt;br /&gt;
! CMAC [[AES Registers|Keyslot]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Savegames]]&lt;br /&gt;
| Gamecard&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-NOR0|CTR-NOR0]]&lt;br /&gt;
| 0x19 / 0x33&lt;br /&gt;
|-&lt;br /&gt;
| [[Savegames]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-SIGN|CTR-SIGN]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[System SaveData]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-SYS0|CTR-SYS0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Extdata|Private Extdata]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-EXT0|CTR-EXT0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Extdata|Shared Extdata]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-EXT0|CTR-EXT0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Title Database]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-9DB0|CTR-9DB0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Title Database]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-9DB0|CTR-9DB0]]&lt;br /&gt;
| 0x0B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Encryption ==&lt;br /&gt;
&lt;br /&gt;
DISA and DIFF formats don&#039;t have their own encryption specification. They follow the encryption method defined by their media:&lt;br /&gt;
&lt;br /&gt;
* Gamecard savegames have special wear leveling + encryption layers. See [[Savegames]] for detail.&lt;br /&gt;
* Files on SD follow [[SD Filesystem|the general SD filesystem encryption rule]].&lt;br /&gt;
* Files on NAND are in cleartext, after decrypting [[Flash Filesystem|the NAND partition encryption]].&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
A DISA / DIFF file consists of the following components:&lt;br /&gt;
&lt;br /&gt;
* 0x100-byte AES CMAC&lt;br /&gt;
* 0x100-byte Header&lt;br /&gt;
* Secondary partition table&lt;br /&gt;
** Contains one or two partition descriptors, depending on the number of partitions.&lt;br /&gt;
* Primary partition table&lt;br /&gt;
** Same layout as the secondary one&lt;br /&gt;
* Partition A&lt;br /&gt;
* Partition B (optional)&lt;br /&gt;
** can only exist for DISA.&lt;br /&gt;
&lt;br /&gt;
== AES CMAC ==&lt;br /&gt;
&lt;br /&gt;
The AES CMAC is located at the beginning of the DISA / DIFF image, and it is 0x10 long. The rest 0xF0 bytes before the header are unused.&lt;br /&gt;
&lt;br /&gt;
The key used for the AES CMAC is generated by the [[AES Registers|hardware key engine]]. See the keyslot it uses in the table above.&lt;br /&gt;
&lt;br /&gt;
The data being authenticated by the AES CMAC is a 0x20-byte SHA-256 hash of a data block. The data block has different content formats among CMAC types. All types of data block contain a copy or a hash of the header, which is the start of the the rest of the verification chain, so the AES CMAC effectively authenticates the whole save image. Each type of data block is explained below.&lt;br /&gt;
&lt;br /&gt;
=== CTR-NOR0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for gamecard savegames. It is 0x28-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-NOR0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 of the following 0x108-byte block&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SAV0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-SIGN ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for SD savegames. It is 0x30-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SIGN&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 of the following 0x108-byte block&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SAV0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CTR-SYS0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for NAND system save. It is 0x110-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SYS0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Save ID. The higher word is always zero&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-EXT0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for extdata. It is 0x11C-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-EXT0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Extdata ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| 0 for Quota.dat, 1 otherwise&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| ID in the device file name. 0 for Quota.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| ID in the device directory name that the file is in. 0 for Quota.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DIFF header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-9DB0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for title database. It is 0x10C-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-9DB0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 4&lt;br /&gt;
| Database ID. Each .db file has its own ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DIFF header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&lt;br /&gt;
The header located at offset 0x100 defines the rest components of the file (partitions and their tables). All offsets in the header are relative to the beginning of the DISA/DIFF file, except for partition descriptor offsets, which are relative to the beginning of the (active) partition table. DISA and DIFF have different header format.&lt;br /&gt;
&lt;br /&gt;
=== DISA header ===&lt;br /&gt;
&lt;br /&gt;
==== SaveDataSecureValue ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Length !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Anti_Savegame_Restore|Secure Value]] slot&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || u64, [[Anti_Savegame_Restore|Secure Value]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DISA Header structure ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DISA&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x40000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 4&lt;br /&gt;
| Partition count, 1 or 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| Secondary partition table offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Primary partition table offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Partition table size&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A descriptor offset in the partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B descriptor offset in the partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A size&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B size&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 1&lt;br /&gt;
| Active partition table, 0 = primary, 1 = secondary&lt;br /&gt;
|-&lt;br /&gt;
| 0x69&lt;br /&gt;
| 1&lt;br /&gt;
| Number of used [[Anti_Savegame_Restore|Save Data Secure Value]] entries in the DISA header (only for gamecard saves)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6A&lt;br /&gt;
| 2&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 over the active partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x30 (0xC * 0x4)&lt;br /&gt;
| [[DISA_and_DIFF#SaveDataSecureValue|Save Data Secure Value]] entries (4) (only for gamecard saves)&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unused randomly generated u64 value. (only for gamecard saves)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC4&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* When the partition count is 1, there is no partition B and all of its related fields are zero.&lt;br /&gt;
&lt;br /&gt;
=== DIFF header ===&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DIFF&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x30000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Secondary partition table/descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| Primary partition table/descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Partition table/descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Partition (A) offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition (A) size&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| Active partition descriptor, 0 = primary, 1 = secondary&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 over the active partition table/descriptor&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 8&lt;br /&gt;
| Unique identifier&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0xA4&lt;br /&gt;
| Unused, might contain leftover data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* Since DIFF can only contain one partition, a partition table can only have one partition descriptor, so they become the same concept here.&lt;br /&gt;
* See [[Extdata]] for its usage of the unique identifier field. For title database files, this field is zero.&lt;br /&gt;
&lt;br /&gt;
== Partition table &amp;amp;amp; partition descriptor ==&lt;br /&gt;
&lt;br /&gt;
There are two partition tables, but only one of them is active. When operating on a DISA / DIFF file, 3DS FS alternately activate one of the two tables, presumably for data backup or atomic file writing. A newly created DISA / DIFF file may have entirely uninitialized data in the inactive partition table.&lt;br /&gt;
&lt;br /&gt;
One partition table contains one or two partition descriptors , each of which describes the layout of one partition. A partition descriptor contains the following components:&lt;br /&gt;
&lt;br /&gt;
* DIFI header&lt;br /&gt;
* IVFC descriptor&lt;br /&gt;
* DPFS descriptor&lt;br /&gt;
* Partition master hash&lt;br /&gt;
&lt;br /&gt;
=== DIFI header ===&lt;br /&gt;
&lt;br /&gt;
The DIFI header locates at the beginning of a partition descriptor. This header defines the rest components of the partition descriptor (IVFC descriptor, DPFS descriptor and partition master hash). All offsets are relative to the beginning of the partition descriptor, except for &amp;lt;code&amp;gt;External IVFC level 4 offset&amp;lt;/code&amp;gt;, which is relative to the beginning of the partition.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DIFI&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x10000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition hash offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| Partition hash size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 1&lt;br /&gt;
| If none zero, enable external IVFC level 4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| 1&lt;br /&gt;
| DPFS tree level 1 selector&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A&lt;br /&gt;
| 2&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 8&lt;br /&gt;
| External IVFC level 4 offset (zero if external IVFC level 4 disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* The meaning of fields after 0x38 are explained in the section [[#Partition]]&lt;br /&gt;
&lt;br /&gt;
=== IVFC descriptor ===&lt;br /&gt;
&lt;br /&gt;
This header defines each level of IVFC tree (explained in the section [[#Partition]]). All offsets are relative to the beginning of DPFS level 3.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;IVFC&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x20000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Master hash size = partition master hash size in DIFI header&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 1 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 1 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 2 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 2 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 3 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 3 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 4 offset (unused if external IVFC level 4 enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 4 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor size? The value is usually 0x78&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DPFS descriptor ===&lt;br /&gt;
&lt;br /&gt;
This header defines each level of DPFS tree (explained in the section [[#Partition]]). All offsets are relative to the beginning of the partition.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DPFS&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x10000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 1 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 1 block size in log2 (unused?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 2 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 2 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 3 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 3 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Partition master hash ===&lt;br /&gt;
&lt;br /&gt;
This is a SHA-256 hash list over IVFC level 1. See [[#IVFC tree]] for explanation.&lt;br /&gt;
&lt;br /&gt;
== Partition ==&lt;br /&gt;
&lt;br /&gt;
A partition can have two types of layout. This is determined by the field DIFF + 0x38 (&amp;lt;code&amp;gt;Enable external IVFC level 4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The layout type 0 (external IVFC level 4 disabled) contains&lt;br /&gt;
&lt;br /&gt;
* DPFS level 1&lt;br /&gt;
* DPFS level 2&lt;br /&gt;
* DPFS level 3, and inside&lt;br /&gt;
** IVFC level 1&lt;br /&gt;
** IVFC level 2&lt;br /&gt;
** IVFC level 3&lt;br /&gt;
** IVFC level 4 (the actual content data)&lt;br /&gt;
&lt;br /&gt;
The layout type 1 (external IVFC level 4 enabled) contains&lt;br /&gt;
&lt;br /&gt;
* DPFS level 1&lt;br /&gt;
* DPFS level 2&lt;br /&gt;
* DPFS level 3, and inside&lt;br /&gt;
** IVFC level 1&lt;br /&gt;
** IVFC level 2&lt;br /&gt;
** IVFC level 3&lt;br /&gt;
* IVFC level 4 (the actual content data, note that this is out side DPFS level 3)&lt;br /&gt;
&lt;br /&gt;
=== DPFS tree ===&lt;br /&gt;
&lt;br /&gt;
Everything inside the DPFS tree comes in pairs, and at one time only one of a pair is active. The tree is probably designed for atomic writing: for a file writing operation, it writes to the inactive part, then commits the data by switching a bit to activate it.&lt;br /&gt;
&lt;br /&gt;
Each level of DPFS tree consists of a pair of chunks. The size of one chunk is defined as it in the DPFS descriptor, so the total size of a level is actually twice as large as the size recorded in the descriptor. For level 1 and 2, each chunk is a bit array, in which each bit corresponds to a block in the next level (the block size of the next level is also defined in the DPFS descriptor). This bit indicates which one of the pair in the next level is active for this block: 0 means the first one and 1 means the second one. The active chunk of level 1 is selected by &amp;lt;code&amp;gt;DPFS tree level 1 selector&amp;lt;/code&amp;gt; in the DIFI header. The bit array is encoded in u32 array, with MSB as the first bit of each 32 bits.&lt;br /&gt;
&lt;br /&gt;
To access data in level 3, one needs to check the bits in level 1 and level 2 to know which chunk of level 3 is active for the accessed location. For example, for a following configuration:&lt;br /&gt;
&lt;br /&gt;
* Level 1: size = 4 bytes = 32 bits&lt;br /&gt;
* Level 2: size = 0x380 bytes = 0x1C00 bits, block size = 0x80 bytes&lt;br /&gt;
* Level 3: size = 0x1B7F000, block size = 0x1000, block size = 0x1000 bytes&lt;br /&gt;
&lt;br /&gt;
if one want to read byte at 0x1234567 of level 3, the following calculation is performed:&lt;br /&gt;
&lt;br /&gt;
* get level 2 bit index &amp;lt;code&amp;gt;0x1234567 / 0x1000 = 0x1234&amp;lt;/code&amp;gt;, and its byte location &amp;lt;code&amp;gt;0x1234 / 8 = 0x246&amp;lt;/code&amp;gt;&lt;br /&gt;
* get level 1 bit index &amp;lt;code&amp;gt;0x246 / 0x80 = 4&amp;lt;/code&amp;gt;&lt;br /&gt;
* get &amp;lt;code&amp;gt;level1_selector&amp;lt;/code&amp;gt; from DIFI header&lt;br /&gt;
* read &amp;lt;code&amp;gt;level2_selector = Level1[level1_selector].bits[4]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* read &amp;lt;code&amp;gt;level3_selector = Level2[level2_selector].bits[0x1234]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* read &amp;lt;code&amp;gt;data = Level3[level3_selector].bytes[0x1234567]&amp;lt;/code&amp;gt; as the final data&lt;br /&gt;
* in the code above &amp;lt;code&amp;gt;Levelx[k]&amp;lt;/code&amp;gt; means the &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;-th chunk in level &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;k = 0, 1&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;.bits[n]&amp;lt;/code&amp;gt; is expanded to &amp;lt;code&amp;gt;(.u32_array[n / 32] &amp;amp;gt;&amp;amp;gt; (31 - n % 32)) &amp;amp;amp; 1&amp;lt;/code&amp;gt; as the bit array is encoded in u32 array.&lt;br /&gt;
&lt;br /&gt;
Effectively, the active data is scattered among the two level 3 chunk. One can assemble the whole active level 3 image following the same rule.&lt;br /&gt;
&lt;br /&gt;
=== IVFC tree ===&lt;br /&gt;
&lt;br /&gt;
The IVFC tree is used for data verification. It is very similar to the IVFC tree in [[RomFS]], except that it has an additional level here. For level 1, 2 and 3, each level is a list of SHA-256 hash, of which each corresponds to a block of the next level which is zero-padded to align the block size (the block size of the next level is defined in the IVFC descriptor).&lt;br /&gt;
&lt;br /&gt;
The partition master hash in the partition descriptor can be seen as IVFC level 0, which hashes level 1 following the same rule. The master hash is usually 0x20 long, consisting only one hash. This is because most DISA / DIFF files are not large enough to have multiple hashes on the top level, which isn&#039;t the case for some title database files.&lt;br /&gt;
&lt;br /&gt;
However, not all data is hashed - only ranges that have been written with valid data are properly hashed.&lt;br /&gt;
&lt;br /&gt;
Level 4 is the actual content of the partition, which is what the container format essentially contains.&lt;br /&gt;
&lt;br /&gt;
== Extracting content from a DISA / DIFF container ==&lt;br /&gt;
&lt;br /&gt;
* Find the active partition table and the partition(s).&lt;br /&gt;
* Unwrap DPFS tree of partition(s) by reconstructing active data.&lt;br /&gt;
* Unwrap IVFC tree. Either take out level 4 directly, or, better, verify all the hashes and poison the data that is not properly hashed.&lt;br /&gt;
* The IVFC level 4 is the inner content of the file. The format of it varies among different usage. Refer their own page for further extraction.&lt;br /&gt;
&lt;br /&gt;
== Chain of trust ==&lt;br /&gt;
&lt;br /&gt;
* AES CMAC verifies the header.&lt;br /&gt;
* The header verifies the active partition table via the table hash.&lt;br /&gt;
* In the partition table, each descriptor verifies level 1 of its IVFC tree via the master hash.&lt;br /&gt;
* Each IVFC level verifies the next level, until the level 4, which is the inner content.&lt;br /&gt;
&lt;br /&gt;
== Summary diagram ==&lt;br /&gt;
&lt;br /&gt;
[[File:Disa-diff.png]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=DISA_and_DIFF&amp;diff=23593</id>
		<title>DISA and DIFF</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=DISA_and_DIFF&amp;diff=23593"/>
		<updated>2025-06-30T19:21:16Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Add SaveDataSecureValue struct&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes DISA and DIFF format as the underlying container of [[Savegames]], [[Extdata]] and [[Title Database]]. For further format specification of the inner data, please refer to their own page.&lt;br /&gt;
&lt;br /&gt;
All data in this page is little-endian. All &amp;quot;unused / padding&amp;quot; fields can contain uninitialized data unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
DISA and DIFF are two container formats. They are very similar and are used for various purposes in 3DS. Here is a summary table of their usage, the CMAC type and the AES key slot used (the meaning of these is explained in the next section):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Usage&lt;br /&gt;
! Media&lt;br /&gt;
! Container format&lt;br /&gt;
! [[#AES CMAC|CMAC type]]&lt;br /&gt;
! CMAC [[AES Registers|Keyslot]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Savegames]]&lt;br /&gt;
| Gamecard&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-NOR0|CTR-NOR0]]&lt;br /&gt;
| 0x19 / 0x33&lt;br /&gt;
|-&lt;br /&gt;
| [[Savegames]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-SIGN|CTR-SIGN]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[System SaveData]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DISA&lt;br /&gt;
| [[#CTR-SYS0|CTR-SYS0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Extdata|Private Extdata]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-EXT0|CTR-EXT0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Extdata|Shared Extdata]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-EXT0|CTR-EXT0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Title Database]]&lt;br /&gt;
| [[SD Filesystem|SD]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-9DB0|CTR-9DB0]]&lt;br /&gt;
| 0x30&lt;br /&gt;
|-&lt;br /&gt;
| [[Title Database]]&lt;br /&gt;
| [[Flash Filesystem|NAND]]&lt;br /&gt;
| DIFF&lt;br /&gt;
| [[#CTR-9DB0|CTR-9DB0]]&lt;br /&gt;
| 0x0B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Encryption ==&lt;br /&gt;
&lt;br /&gt;
DISA and DIFF formats don&#039;t have their own encryption specification. They follow the encryption method defined by their media:&lt;br /&gt;
&lt;br /&gt;
* Gamecard savegames have special wear leveling + encryption layers. See [[Savegames]] for detail.&lt;br /&gt;
* Files on SD follow [[SD Filesystem|the general SD filesystem encryption rule]].&lt;br /&gt;
* Files on NAND are in cleartext, after decrypting [[Flash Filesystem|the NAND partition encryption]].&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
A DISA / DIFF file consists of the following components:&lt;br /&gt;
&lt;br /&gt;
* 0x100-byte AES CMAC&lt;br /&gt;
* 0x100-byte Header&lt;br /&gt;
* Secondary partition table&lt;br /&gt;
** Contains one or two partition descriptors, depending on the number of partitions.&lt;br /&gt;
* Primary partition table&lt;br /&gt;
** Same layout as the secondary one&lt;br /&gt;
* Partition A&lt;br /&gt;
* Partition B (optional)&lt;br /&gt;
** can only exist for DISA.&lt;br /&gt;
&lt;br /&gt;
== AES CMAC ==&lt;br /&gt;
&lt;br /&gt;
The AES CMAC is located at the beginning of the DISA / DIFF image, and it is 0x10 long. The rest 0xF0 bytes before the header are unused.&lt;br /&gt;
&lt;br /&gt;
The key used for the AES CMAC is generated by the [[AES Registers|hardware key engine]]. See the keyslot it uses in the table above.&lt;br /&gt;
&lt;br /&gt;
The data being authenticated by the AES CMAC is a 0x20-byte SHA-256 hash of a data block. The data block has different content formats among CMAC types. All types of data block contain a copy or a hash of the header, which is the start of the the rest of the verification chain, so the AES CMAC effectively authenticates the whole save image. Each type of data block is explained below.&lt;br /&gt;
&lt;br /&gt;
=== CTR-NOR0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for gamecard savegames. It is 0x28-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-NOR0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 of the following 0x108-byte block&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SAV0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-SIGN ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for SD savegames. It is 0x30-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SIGN&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 of the following 0x108-byte block&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SAV0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CTR-SYS0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for NAND system save. It is 0x110-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-SYS0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Save ID. The higher word is always zero&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DISA header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-EXT0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for extdata. It is 0x11C-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-EXT0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Extdata ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| 0 for Quota.dat, 1 otherwise&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| ID in the device file name. 0 for Quota.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| ID in the device directory name that the file is in. 0 for Quota.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DIFF header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CTR-9DB0 ===&lt;br /&gt;
&lt;br /&gt;
This CMAC type is used for title database. It is 0x10C-byte long.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Magic &amp;amp;quot;CTR-9DB0&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 4&lt;br /&gt;
| Database ID. Each .db file has its own ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x100&lt;br /&gt;
| Copy of the DIFF header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&lt;br /&gt;
The header located at offset 0x100 defines the rest components of the file (partitions and their tables). All offsets in the header are relative to the beginning of the DISA/DIFF file, except for partition descriptor offsets, which are relative to the beginning of the (active) partition table. DISA and DIFF have different header format.&lt;br /&gt;
&lt;br /&gt;
=== DISA header ===&lt;br /&gt;
&lt;br /&gt;
==== SaveDataSecureValue ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Length !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32, [[Anti_Savegame_Restore|Secure Value]] slot&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || u64, [[Anti_Savegame_Restore|Secure Value]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== DISA Header structure ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DISA&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x40000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 4&lt;br /&gt;
| Partition count, 1 or 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| Secondary partition table offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Primary partition table offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Partition table size&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A descriptor offset in the partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B descriptor offset in the partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 8&lt;br /&gt;
| Partition A size&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 8&lt;br /&gt;
| Partition B size&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 1&lt;br /&gt;
| Active partition table, 0 = primary, 1 = secondary&lt;br /&gt;
|-&lt;br /&gt;
| 0x69&lt;br /&gt;
| 1&lt;br /&gt;
| Number of used [[Anti_Savegame_Restore|Save Data Secure Value]] entries in the DISA header&lt;br /&gt;
|-&lt;br /&gt;
| 0x6A&lt;br /&gt;
| 2&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 over the active partition table&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x30 (0xC * 0x4)&lt;br /&gt;
| [[DISA_and_DIFF#SaveDataSecureValue|Save Data Secure Value]] entries (4)&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x44&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* When the partition count is 1, there is no partition B and all of its related fields are zero.&lt;br /&gt;
&lt;br /&gt;
=== DIFF header ===&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DIFF&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x30000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Secondary partition table/descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| Primary partition table/descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Partition table/descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Partition (A) offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition (A) size&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| Active partition descriptor, 0 = primary, 1 = secondary&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x20&lt;br /&gt;
| SHA-256 over the active partition table/descriptor&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 8&lt;br /&gt;
| Unique identifier&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0xA4&lt;br /&gt;
| Unused, might contain leftover data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* Since DIFF can only contain one partition, a partition table can only have one partition descriptor, so they become the same concept here.&lt;br /&gt;
* See [[Extdata]] for its usage of the unique identifier field. For title database files, this field is zero.&lt;br /&gt;
&lt;br /&gt;
== Partition table &amp;amp;amp; partition descriptor ==&lt;br /&gt;
&lt;br /&gt;
There are two partition tables, but only one of them is active. When operating on a DISA / DIFF file, 3DS FS alternately activate one of the two tables, presumably for data backup or atomic file writing. A newly created DISA / DIFF file may have entirely uninitialized data in the inactive partition table.&lt;br /&gt;
&lt;br /&gt;
One partition table contains one or two partition descriptors , each of which describes the layout of one partition. A partition descriptor contains the following components:&lt;br /&gt;
&lt;br /&gt;
* DIFI header&lt;br /&gt;
* IVFC descriptor&lt;br /&gt;
* DPFS descriptor&lt;br /&gt;
* Partition master hash&lt;br /&gt;
&lt;br /&gt;
=== DIFI header ===&lt;br /&gt;
&lt;br /&gt;
The DIFI header locates at the beginning of a partition descriptor. This header defines the rest components of the partition descriptor (IVFC descriptor, DPFS descriptor and partition master hash). All offsets are relative to the beginning of the partition descriptor, except for &amp;lt;code&amp;gt;External IVFC level 4 offset&amp;lt;/code&amp;gt;, which is relative to the beginning of the partition.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DIFI&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x10000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS descriptor offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS descriptor size&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| Partition hash offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| Partition hash size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 1&lt;br /&gt;
| If none zero, enable external IVFC level 4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| 1&lt;br /&gt;
| DPFS tree level 1 selector&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A&lt;br /&gt;
| 2&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 8&lt;br /&gt;
| External IVFC level 4 offset (zero if external IVFC level 4 disabled)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* The meaning of fields after 0x38 are explained in the section [[#Partition]]&lt;br /&gt;
&lt;br /&gt;
=== IVFC descriptor ===&lt;br /&gt;
&lt;br /&gt;
This header defines each level of IVFC tree (explained in the section [[#Partition]]). All offsets are relative to the beginning of DPFS level 3.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;IVFC&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x20000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Master hash size = partition master hash size in DIFI header&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 1 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 1 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 2 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 2 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 3 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 3 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 4 offset (unused if external IVFC level 4 enabled)&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC level 4 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 4&lt;br /&gt;
| IVFC level 4 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 8&lt;br /&gt;
| IVFC descriptor size? The value is usually 0x78&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DPFS descriptor ===&lt;br /&gt;
&lt;br /&gt;
This header defines each level of DPFS tree (explained in the section [[#Partition]]). All offsets are relative to the beginning of the partition.&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;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Magic &amp;amp;quot;DPFS&amp;amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 4&lt;br /&gt;
| Magic 0x10000&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 1 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 1 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 1 block size in log2 (unused?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 2 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 2 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 2 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 3 offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 8&lt;br /&gt;
| DPFS level 3 size&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 4&lt;br /&gt;
| DPFS level 3 block size in log2&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Partition master hash ===&lt;br /&gt;
&lt;br /&gt;
This is a SHA-256 hash list over IVFC level 1. See [[#IVFC tree]] for explanation.&lt;br /&gt;
&lt;br /&gt;
== Partition ==&lt;br /&gt;
&lt;br /&gt;
A partition can have two types of layout. This is determined by the field DIFF + 0x38 (&amp;lt;code&amp;gt;Enable external IVFC level 4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The layout type 0 (external IVFC level 4 disabled) contains&lt;br /&gt;
&lt;br /&gt;
* DPFS level 1&lt;br /&gt;
* DPFS level 2&lt;br /&gt;
* DPFS level 3, and inside&lt;br /&gt;
** IVFC level 1&lt;br /&gt;
** IVFC level 2&lt;br /&gt;
** IVFC level 3&lt;br /&gt;
** IVFC level 4 (the actual content data)&lt;br /&gt;
&lt;br /&gt;
The layout type 1 (external IVFC level 4 enabled) contains&lt;br /&gt;
&lt;br /&gt;
* DPFS level 1&lt;br /&gt;
* DPFS level 2&lt;br /&gt;
* DPFS level 3, and inside&lt;br /&gt;
** IVFC level 1&lt;br /&gt;
** IVFC level 2&lt;br /&gt;
** IVFC level 3&lt;br /&gt;
* IVFC level 4 (the actual content data, note that this is out side DPFS level 3)&lt;br /&gt;
&lt;br /&gt;
=== DPFS tree ===&lt;br /&gt;
&lt;br /&gt;
Everything inside the DPFS tree comes in pairs, and at one time only one of a pair is active. The tree is probably designed for atomic writing: for a file writing operation, it writes to the inactive part, then commits the data by switching a bit to activate it.&lt;br /&gt;
&lt;br /&gt;
Each level of DPFS tree consists of a pair of chunks. The size of one chunk is defined as it in the DPFS descriptor, so the total size of a level is actually twice as large as the size recorded in the descriptor. For level 1 and 2, each chunk is a bit array, in which each bit corresponds to a block in the next level (the block size of the next level is also defined in the DPFS descriptor). This bit indicates which one of the pair in the next level is active for this block: 0 means the first one and 1 means the second one. The active chunk of level 1 is selected by &amp;lt;code&amp;gt;DPFS tree level 1 selector&amp;lt;/code&amp;gt; in the DIFI header. The bit array is encoded in u32 array, with MSB as the first bit of each 32 bits.&lt;br /&gt;
&lt;br /&gt;
To access data in level 3, one needs to check the bits in level 1 and level 2 to know which chunk of level 3 is active for the accessed location. For example, for a following configuration:&lt;br /&gt;
&lt;br /&gt;
* Level 1: size = 4 bytes = 32 bits&lt;br /&gt;
* Level 2: size = 0x380 bytes = 0x1C00 bits, block size = 0x80 bytes&lt;br /&gt;
* Level 3: size = 0x1B7F000, block size = 0x1000, block size = 0x1000 bytes&lt;br /&gt;
&lt;br /&gt;
if one want to read byte at 0x1234567 of level 3, the following calculation is performed:&lt;br /&gt;
&lt;br /&gt;
* get level 2 bit index &amp;lt;code&amp;gt;0x1234567 / 0x1000 = 0x1234&amp;lt;/code&amp;gt;, and its byte location &amp;lt;code&amp;gt;0x1234 / 8 = 0x246&amp;lt;/code&amp;gt;&lt;br /&gt;
* get level 1 bit index &amp;lt;code&amp;gt;0x246 / 0x80 = 4&amp;lt;/code&amp;gt;&lt;br /&gt;
* get &amp;lt;code&amp;gt;level1_selector&amp;lt;/code&amp;gt; from DIFI header&lt;br /&gt;
* read &amp;lt;code&amp;gt;level2_selector = Level1[level1_selector].bits[4]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* read &amp;lt;code&amp;gt;level3_selector = Level2[level2_selector].bits[0x1234]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* read &amp;lt;code&amp;gt;data = Level3[level3_selector].bytes[0x1234567]&amp;lt;/code&amp;gt; as the final data&lt;br /&gt;
* in the code above &amp;lt;code&amp;gt;Levelx[k]&amp;lt;/code&amp;gt; means the &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;-th chunk in level &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;k = 0, 1&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;.bits[n]&amp;lt;/code&amp;gt; is expanded to &amp;lt;code&amp;gt;(.u32_array[n / 32] &amp;amp;gt;&amp;amp;gt; (31 - n % 32)) &amp;amp;amp; 1&amp;lt;/code&amp;gt; as the bit array is encoded in u32 array.&lt;br /&gt;
&lt;br /&gt;
Effectively, the active data is scattered among the two level 3 chunk. One can assemble the whole active level 3 image following the same rule.&lt;br /&gt;
&lt;br /&gt;
=== IVFC tree ===&lt;br /&gt;
&lt;br /&gt;
The IVFC tree is used for data verification. It is very similar to the IVFC tree in [[RomFS]], except that it has an additional level here. For level 1, 2 and 3, each level is a list of SHA-256 hash, of which each corresponds to a block of the next level which is zero-padded to align the block size (the block size of the next level is defined in the IVFC descriptor).&lt;br /&gt;
&lt;br /&gt;
The partition master hash in the partition descriptor can be seen as IVFC level 0, which hashes level 1 following the same rule. The master hash is usually 0x20 long, consisting only one hash. This is because most DISA / DIFF files are not large enough to have multiple hashes on the top level, which isn&#039;t the case for some title database files.&lt;br /&gt;
&lt;br /&gt;
However, not all data is hashed - only ranges that have been written with valid data are properly hashed.&lt;br /&gt;
&lt;br /&gt;
Level 4 is the actual content of the partition, which is what the container format essentially contains.&lt;br /&gt;
&lt;br /&gt;
== Extracting content from a DISA / DIFF container ==&lt;br /&gt;
&lt;br /&gt;
* Find the active partition table and the partition(s).&lt;br /&gt;
* Unwrap DPFS tree of partition(s) by reconstructing active data.&lt;br /&gt;
* Unwrap IVFC tree. Either take out level 4 directly, or, better, verify all the hashes and poison the data that is not properly hashed.&lt;br /&gt;
* The IVFC level 4 is the inner content of the file. The format of it varies among different usage. Refer their own page for further extraction.&lt;br /&gt;
&lt;br /&gt;
== Chain of trust ==&lt;br /&gt;
&lt;br /&gt;
* AES CMAC verifies the header.&lt;br /&gt;
* The header verifies the active partition table via the table hash.&lt;br /&gt;
* In the partition table, each descriptor verifies level 1 of its IVFC tree via the master hash.&lt;br /&gt;
* Each IVFC level verifies the next level, until the level 4, which is the inner content.&lt;br /&gt;
&lt;br /&gt;
== Summary diagram ==&lt;br /&gt;
&lt;br /&gt;
[[File:Disa-diff.png]]&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
</feed>