<?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-06-27T01:27:42Z</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=23859</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=23859"/>
		<updated>2026-06-23T20:39:05Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* Configuration blocks */&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;
| u64, Current local friend code. Updated by the friends sysmodule when a local friends account is loaded with [[FRDA:LoadLocalAccount]] accordingly.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| u64, Local friend code base value. This value is sent by the friends sysmodule to the friends gameserver during NEX account creation and serves as a means to find PIDs (and thus &amp;quot;online&amp;quot; friend codes) for other consoles&#039; that were registered using [[FRDA:AddFriendOffline]] when those console(s) hadn&#039;t yet registered with the friends services at the time. The lower 34 bits are from [[Nandrw/sys/LocalFriendCodeSeed_B|LocalFriendCodeSeed]], and the upper 16 bits are from the LocalFriendCodeSeed counter (see below block, 0x90002). The remaining bits are left zero. This value is initialized as described by the CFG module when the LocalFriendCodeSeed part is zero. Used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| u16, Local friend code counter. This value is initialized by the CFG module alongside block 0x90001 to two random bytes generated by [[PS:GenerateRandomBytes]] and also serves as a component of that block. It is incremented by PTM and stored in MCU storage when PTM save data is formatted. Once incremented, upon reboot, PTM will use the counter stored in MCU storage to update the local friend code base value (block 0x90001). After updating the relevant configuration blocks, PTM sets the storage area reserved for the counter to 0.&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=Config_Savegame&amp;diff=23858</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=23858"/>
		<updated>2026-06-23T18:04:51Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Correct information regarding local friend code/(base/counter)&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;
| u64, Current local friend code. Updated by the friends sysmodule when a local friends account is loaded with [[FRDA:LoadLocalAccount]] accordingly.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| u64, Local friend code base value. This value is sent by the friends sysmodule to the friends gameserver during NEX account creation and serves as a means to find PIDs (and thus &amp;quot;online&amp;quot; friend codes) for other consoles&#039; that were registered using [[FRDA:AddFriendOffline]] when those console(s) hadn&#039;t yet registered with the friends services at the time. The lower 48 bits are from [[Nandrw/sys/LocalFriendCodeSeed_B|LocalFriendCodeSeed]], and the upper 16 bits are from the LocalFriendCodeSeed counter (see below block, 0x90002). This value is initialized as described by the CFG module when the LocalFriendCodeSeed part is zero. Used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| u16, Local friend code counter. This value is initialized by the CFG module alongside block 0x90001 to two random bytes generated by [[PS:GenerateRandomBytes]] and also serves as a component of that block. It is incremented by PTM and stored in MCU storage when PTM save data is formatted. Once incremented, upon reboot, PTM will use the counter stored in MCU storage to update the local friend code base value (block 0x90001). After updating the relevant configuration blocks, PTM sets the storage area reserved for the counter to 0.&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=Config_Savegame&amp;diff=23857</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=23857"/>
		<updated>2026-06-23T12:14:12Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Update description for local friend code counter&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;
| Local friend code. This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (LocalFriendCodeCounter &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where LocalFriendCodeCounter is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| u16, Local friend code counter. Incremented by PTM and stored in MCU storage when PTM save data is formatted. Once incremented, upon reboot, PTM will use the counter stored in MCU storage to update the local friend code (block 0x90001).&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=Config_Savegame&amp;diff=23856</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=23856"/>
		<updated>2026-06-23T11:49:29Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: 0x90002 -&amp;gt; Local friend code counter&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;
| Local friend code. This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (LocalFriendCodeCounter &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where LocalFriendCodeCounter is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| u16, Local friend code counter&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=Config_Savegame&amp;diff=23855</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=23855"/>
		<updated>2026-06-23T11:43:21Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: 0x90001 -&amp;gt; Local friend code&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;
| Local friend code. 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=Title_Database&amp;diff=23854</id>
		<title>Title Database</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Title_Database&amp;diff=23854"/>
		<updated>2026-06-16T11:24:26Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Move table of contents to the correct location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
These files contain data relating to install/usage/management of installed 3DS titles. The database files are located at:&lt;br /&gt;
&lt;br /&gt;
* nand/dbs&lt;br /&gt;
* sdmc/Nintendo 3DS/&amp;lt;ID0&amp;gt;/&amp;lt;ID1&amp;gt;/dbs&lt;br /&gt;
&lt;br /&gt;
ID0 is the first 0x10-bytes from a SHA256 [[nand/private/movable.sed|hash]]. The installation of [[SD Filesystem|SD Card]] titles was introduced in the [[2.0.0-2]] update and the SD dbs files are encrypted by [[SD Filesystem|the general SD filesystem encryption rule]]. These files are [[DISA and DIFF|DIFF containers]]. These DIFF files do not use external IVFC level 4, so all database data is duplicated in the container. In this page only the inner content of the container is described.&lt;br /&gt;
&lt;br /&gt;
These files are only created on SD (via [[Application_Manager_Services|AM]]) if they don&#039;t exist when the [[eShop]] application is starting up, during network init etc (prior to showing the &amp;quot;system update required&amp;quot; dialog).&lt;br /&gt;
&lt;br /&gt;
These files are stored under this directory:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Stored on SD card&lt;br /&gt;
!  Stored in CTR-NAND&lt;br /&gt;
!  Filename&lt;br /&gt;
!  [[DISA and DIFF#CTR-9DB0|CTR-9DB0]] ID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| ticket.db&lt;br /&gt;
| 0x0&lt;br /&gt;
| This contains the installed tickets (NAND and SD).&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| certs.db&lt;br /&gt;
| 0x1&lt;br /&gt;
| This contains the certificate chain used to verify TMDs and other certificates.&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| title.db&lt;br /&gt;
| 0x2&lt;br /&gt;
| Title database, this contains entries for all installed titles (TWL &amp;amp; CTR) on the 3DS (Each database is responsible for titles installed on its medium).&lt;br /&gt;
|-&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| import.db&lt;br /&gt;
| 0x3&lt;br /&gt;
| This is an Import Database, it contains entries for titles (or versions of titles) not yet installed, ready for transferring to the title.db. (Automatic Update uses this, so completing the update takes seconds.)&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| tmp_t.db&lt;br /&gt;
| 0x4&lt;br /&gt;
| This is the temporary Title database containing one entry for the currently installed [[Download Play]] Child.&lt;br /&gt;
|-&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| tmp_i.db&lt;br /&gt;
| 0x5&lt;br /&gt;
| Similar to import.db, except it&#039;s used in conjunction with tmp_t.db, for installing [[Download Play]] Children.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The inner content of the container consists of a pre-header with size of 0x80 identifying the Database Type, followed by a BDRI container. The offsets in the BDRI header are usually relative to the offset to the start of the BDRI header (0x80 in the file)&lt;br /&gt;
&lt;br /&gt;
== Pre Header ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 8&lt;br /&gt;
| Database Type &amp;quot;Magic&amp;quot; (see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x74&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For ticket.db, a different pre-header is used:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Database Type &amp;quot;Magic&amp;quot; (see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Version (always 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Database Magic ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Database Type&lt;br /&gt;
! Magic&lt;br /&gt;
|-&lt;br /&gt;
| CTR-NAND ticket.db&lt;br /&gt;
| TICK&lt;br /&gt;
|-&lt;br /&gt;
| CTR-NAND import.db&lt;br /&gt;
| NANDIDB&lt;br /&gt;
|-&lt;br /&gt;
| CTR-NAND title.db&lt;br /&gt;
| NANDTDB&lt;br /&gt;
|-&lt;br /&gt;
| CTR-NAND tmp_i.db&lt;br /&gt;
| TEMPIDB&lt;br /&gt;
|-&lt;br /&gt;
| CTR-NAND tmp_t.db&lt;br /&gt;
| TEMPIDB&lt;br /&gt;
|-&lt;br /&gt;
| SD Card import.db&lt;br /&gt;
| TEMPTDB&lt;br /&gt;
|-&lt;br /&gt;
| SD Card title.db&lt;br /&gt;
| TEMPTDB&lt;br /&gt;
|-&lt;br /&gt;
| (unused, likely supposed to be SD card import.db)&lt;br /&gt;
| SDMCIDB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== BDRI ==&lt;br /&gt;
&lt;br /&gt;
This is a variant of [[Inner FAT|FAT filesystem]]. It consists one &amp;quot;root&amp;quot; directory and multiple &amp;quot;files&amp;quot;. Each &amp;quot;file&amp;quot; is one title info entry described below.&lt;br /&gt;
&lt;br /&gt;
=== Title Info Entry ===&lt;br /&gt;
&lt;br /&gt;
An entry contains information taken from both the application NCCH file(s) and TMD.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start !! Length !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8 || u64, Title Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x4 || u32, Title Type from TMD (usually 0x40)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x2 || u16, Title Version&lt;br /&gt;
|-&lt;br /&gt;
| 0xE || 0x2 || u16, Content index for Download Play Child content&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x2 || u16, Content index for Instruction Manual content&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || 0x2 || u16, Content index for Old3DS update partition (even though this is unused because digital titles don&#039;t have update partitions)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || TMD file ID (the ID part in &amp;lt;code&amp;gt;{ID}.tmd&amp;lt;/code&amp;gt; inside the title folder)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || 0x4 || CMD file ID (the ID part in &amp;lt;code&amp;gt;{ID}.cmd&amp;lt;/code&amp;gt; inside the title folder)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || 0x4 || save file ID (the ID part in &amp;lt;code&amp;gt;{ID}.sav&amp;lt;/code&amp;gt; inside the title/data folder)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || 0x8 || u64, extdata ID (zero if title does not use extdata)&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || 0x1 || bool, has public.sav (DSiWare only)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 || 0x1 || bool, has private.sav (DSiWare only)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A || 0x1 || bool, has banner.sav (DSiWare only)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B || 0x1 || bool, requires moving public/private/banner.new to public/private/banner.sav (DSiWare only) (see [[AMPXI:WriteTWLSavedata]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || 0x1 || u8, CMD format version (see [[Titles#Data_Structure|Title Data Structure]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D || 0x1 || bool, is user DSiWare title (as in, does not have system title bit set, see [[Title_list#TWL_(DSi)_Titles|TWL (DSi) Titles]] for more information)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || 0x2 || u16, New3DS update partition content index (even though this is unused because digital titles don&#039;t have update partitions)&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || 0x10 || Product code (first 12 bytes of raw .nds for DSiWare, which is the game title)&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || 0x8 || u64, ordering number. Used in some code paths to find the &amp;quot;latest&amp;quot; added entry, but this value is never written and always 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || 0x1 || bool, is temporary (true for DLP child titles added into tmp_i/tmp_t.db)&lt;br /&gt;
|-&lt;br /&gt;
| 0x49 || 0x1 || u8, [[Application_Manager_Services#ImportTitleContextState|ImportTitleContextState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A || 0x1 || bool, overwrite (set when reinstalling an existing title)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B || 0x1 || Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || 0x4 || Content ID for content index 0, 0xFFFFFFFF if not applicable&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 || 0x4 || u32, random value generated during title installation (See [[CTXT]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 || 0x2C || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ticket Info Entry ===&lt;br /&gt;
For ticket.db entries, there is a header indicates ticket count (as a Title ID can have more than one ticket installed). Then each entry contains the size, followed by the actual ticket data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Header&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Amount of tickets X&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| X * (size of tickets + 4)&lt;br /&gt;
| Ticket entries&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Ticket entry&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Ticket data size X (often 0x350 but some DLC tickets may be larger)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| X&lt;br /&gt;
| [[Ticket|Ticket]] data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is important to note the database doesn&#039;t contain a hash of the [[Title Data Structure|.cmd]]. So if a user has more than one valid set of [[Title Data Structure|application data]] for a given .cmd Content ID they can be manually interchanged without issue. Though renaming a .cmd file to match the Content ID which the title.db is expecting will result in an error, as the CTR for the per-console encryption layer changes depending on the file path, and the MAC of the .cmd is probably generated with the .cmd Content ID in mind.&lt;br /&gt;
&lt;br /&gt;
These NAND/SD /dbs images seem to be loaded by the ARM9 while NATIVE_FIRM is booting.&lt;br /&gt;
&lt;br /&gt;
Removing ticket.db from a New-3DS with signature checks disabled will not result in an unbootable system, however all icons except Slot-1 will disappear from Home. Applets can however still be used. Recovery can be accomplished via [[Hardware|hardmod]] or [[arm9loaderhax]] plus a known good backup of the file (or the whole partition or disk); Gamecard exploits were not tested, and Browserhax did not work.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferRW&amp;diff=23852</id>
		<title>Template:IPC/SendPXIBufferRW</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferRW&amp;diff=23852"/>
		<updated>2026-06-06T08:45:08Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000004 {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4) {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8)}} for copying a [[IPC#Usage_Examples_for_other_Translation_Types|read-write buffer over PXI]] to the target process (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23851</id>
		<title>Template:IPC/SendPXIBufferR</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23851"/>
		<updated>2026-06-06T08:44:45Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000006 {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4) {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8)}} for copying a [[IPC#Usage_Examples_for_other_Translation_Types|read-only buffer over PXI]] to the target process (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23850</id>
		<title>Template:IPC/SendPXIBufferR</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23850"/>
		<updated>2026-06-06T08:44:18Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000006 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4)}} for copying a [[IPC#Usage_Examples_for_other_Translation_Types|read-only buffer over PXI]] to the target process (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23849</id>
		<title>Template:IPC/SendPXIBufferR</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23849"/>
		<updated>2026-06-06T08:43:44Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000006 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4)}} for copying a [[IPC#Usage_Examples_for_other_Translation_Types|read-only buffer over PXI]] to the target process ({{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferRW&amp;diff=23848</id>
		<title>Template:IPC/SendPXIBufferRW</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferRW&amp;diff=23848"/>
		<updated>2026-06-06T08:43:28Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000004 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4)}} for copying a [[IPC#Usage_Examples_for_other_Translation_Types|read-write buffer over PXI]] to the target process ({{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferRW&amp;diff=23847</id>
		<title>Template:IPC/SendPXIBufferRW</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferRW&amp;diff=23847"/>
		<updated>2026-06-06T08:38:59Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;&amp;lt;noinclude&amp;gt; {{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}} &amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&amp;#039;&amp;#039;{{Tooltip|Descriptor|0x00000004 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4)}} for copying a {{#if:{{{2|}}}|{{{2}}} byte&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;|}}read-write buffer over PXI to the target process ({{{2}}})&amp;#039;&amp;#039;|descstyle=border-bottom-style:dashed}} {{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000004 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4)}} for copying a {{#if:{{{2|}}}|{{{2}}} byte&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;|}}[[IPC#Usage_Examples_for_other_Translation_Types|read-write buffer over PXI]] to the target process ({{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23846</id>
		<title>Template:IPC/SendPXIBufferR</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/SendPXIBufferR&amp;diff=23846"/>
		<updated>2026-06-06T08:37:06Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;&amp;lt;noinclude&amp;gt; {{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}} &amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&amp;#039;&amp;#039;{{Tooltip|Descriptor|0x00000006 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4)}} for copying a {{#if:{{{2|}}}|{{{2}}} byte&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;|}}read-only buffer over PXI to the target process ({{{2}}})&amp;#039;&amp;#039;|descstyle=border-bottom-style:dashed}} {{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;n...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000006 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4)}} for copying a {{#if:{{{2|}}}|{{{2}}} byte&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;|}}[[IPC#Usage_Examples_for_other_Translation_Types|read-only buffer over PXI]] to the target process ({{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23845</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23845"/>
		<updated>2026-05-28T12:49:36Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* I2C Service Names */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
== I2C Service Names ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Accessible [[I2C_Registers#I2C_Devices|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| 7, 8&lt;br /&gt;
| dmnt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
New3DS-sysmodule specific services:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]].&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;br /&gt;
&lt;br /&gt;
== Common Result Values ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A02FEA || The current session is not permitted to access the specified device ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF9602FEF || Communication error. Device may not be connected.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23844</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23844"/>
		<updated>2026-05-28T12:48:58Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
== I2C Service Names ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Accessible [[I2C_Registers#I2C_Devices|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| 7, 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
New3DS-sysmodule specific services:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]].&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;br /&gt;
&lt;br /&gt;
== Common Result Values ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A02FEA || The current session is not permitted to access the specified device ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF9602FEF || Communication error. Device may not be connected.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23843</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23843"/>
		<updated>2026-05-28T12:48:17Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
== I2C Service Names ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Accessible [[I2C_Registers#I2C_Devices|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| 7, 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
New3DS-sysmodule specific services:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]].&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;br /&gt;
&lt;br /&gt;
== Common Result Values ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A02FEA || The current session is not permitted to access the specified device ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF9602FEF || Communication error. Device may not be connected.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23842</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23842"/>
		<updated>2026-05-28T12:47:34Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Add common errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= I2C Service Names =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Accessible [[I2C_Registers#I2C_Devices|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| 7, 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
New3DS-sysmodule specific services:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]].&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;br /&gt;
&lt;br /&gt;
= Common Result Values =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A02FEA || The current session is not permitted to access the specified device ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF9602FEF || Communication error. Device may not be connected.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadDeviceRaw&amp;diff=23841</id>
		<title>I2C:ReadDeviceRaw</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadDeviceRaw&amp;diff=23841"/>
		<updated>2026-05-28T12:43:06Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0015|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0015|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a buffer from the given I2C device raw, without selecting a specific register first.&lt;br /&gt;
&lt;br /&gt;
The maximum output buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x20 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:ReadDeviceRaw8]], except this allows for reading a buffer instead of a single value.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:WriteDeviceRaw&amp;diff=23840</id>
		<title>I2C:WriteDeviceRaw</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:WriteDeviceRaw&amp;diff=23840"/>
		<updated>2026-05-28T12:42:50Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0014|2|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input buffer pointer|1}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0014|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Writes a buffer to the given I2C device raw, without selecting a specific register first.&lt;br /&gt;
&lt;br /&gt;
The maximum input buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x10 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:WriteDeviceRaw8]], except this allows for writing a buffer instead of a single value.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters16&amp;diff=23839</id>
		<title>I2C:ReadRegisters16</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters16&amp;diff=23839"/>
		<updated>2026-05-28T12:42:29Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0010|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u16, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, count}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0010|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a range of 16-bit I2C registers of the specified device sequentially to the given buffer.&lt;br /&gt;
&lt;br /&gt;
The maximum output buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x20 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:ReadRegisters8]], except this reads from 16-bit registers.&lt;br /&gt;
&lt;br /&gt;
For example, assuming:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[5] = 0xAAAA, reg[6] = 0xBBBB, reg[7] = 0xCCCC, reg[8] = 0xDDDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reading with count 4 and starting register 5 would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    outbuf[0] = 0xAAAA&lt;br /&gt;
    outbuf[1] = 0xBBBB&lt;br /&gt;
    outbuf[2] = 0xCCCC&lt;br /&gt;
    outbuf[3] = 0xDDDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:LegacyReadRegisters8&amp;diff=23838</id>
		<title>I2C:LegacyReadRegisters8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:LegacyReadRegisters8&amp;diff=23838"/>
		<updated>2026-05-28T12:42:14Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000F|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000F|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a range of 8-bit I2C registers of the specified device sequentially to the given buffer.&lt;br /&gt;
&lt;br /&gt;
The maximum output buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x20 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:ReadRegisters8]] except:&lt;br /&gt;
* Before selecting the device, this waits 1500ns.&lt;br /&gt;
* Before reading the first byte and after reading the last byte, this waits 15µs.&lt;br /&gt;
&lt;br /&gt;
For example, assuming:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[5] = 0xAA, reg[6] = 0xBB, reg[7] = 0xCC, reg[8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reading 4 bytes with starting register 5 would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    outbuf[0] = 0xAA&lt;br /&gt;
    outbuf[1] = 0xBB&lt;br /&gt;
    outbuf[2] = 0xCC&lt;br /&gt;
    outbuf[3] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters8_2&amp;diff=23837</id>
		<title>I2C:WriteRegisters8 2</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters8_2&amp;diff=23837"/>
		<updated>2026-05-28T12:41:52Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000E|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input buffer pointer|1}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000E|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 is identical to [[I2C:WriteRegisters8]].&lt;br /&gt;
&lt;br /&gt;
Writes the given buffer sequentially to a range of 8-bit I2C registers of the specified device.&lt;br /&gt;
&lt;br /&gt;
The maximum input buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x10 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
For example, writing a buffer of consisting of &amp;lt;code&amp;gt;{ 0xAA, 0xBB, 0xCC, 0xDD }&amp;lt;/code&amp;gt; with starting register 0x5 would do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[0x5] = 0xAA&lt;br /&gt;
    reg[0x6] = 0xBB&lt;br /&gt;
    reg[0x7] = 0xCC&lt;br /&gt;
    reg[0x8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters8&amp;diff=23836</id>
		<title>I2C:ReadRegisters8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters8&amp;diff=23836"/>
		<updated>2026-05-28T12:41:37Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000D|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000D|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a range of 8-bit I2C registers of the specified device sequentially to the given buffer.&lt;br /&gt;
&lt;br /&gt;
The maximum output buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x20 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
For example, assuming:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[5] = 0xAA, reg[6] = 0xBB, reg[7] = 0xCC, reg[8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reading 4 bytes with starting register 5 would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    outbuf[0] = 0xAA&lt;br /&gt;
    outbuf[1] = 0xBB&lt;br /&gt;
    outbuf[2] = 0xCC&lt;br /&gt;
    outbuf[3] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters16&amp;diff=23835</id>
		<title>I2C:WriteRegisters16</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters16&amp;diff=23835"/>
		<updated>2026-05-28T12:41:21Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000C|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u16, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input buffer pointer|1}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000C|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Writes the given buffer sequentially to a range of 16-bit I2C registers of the specified device.&lt;br /&gt;
&lt;br /&gt;
The maximum input buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x10 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
For example, writing a buffer of consisting of &amp;lt;code&amp;gt;{ 0xAAAA, 0xBBBB, 0xCCCC, 0xDDDD }&amp;lt;/code&amp;gt; with starting register 0x5 would do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[0x5] = 0xAAAA&lt;br /&gt;
    reg[0x6] = 0xBBBB&lt;br /&gt;
    reg[0x7] = 0xCCCC&lt;br /&gt;
    reg[0x8] = 0xDDDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:WriteRegisters8]] except this uses 16-bit registers.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters8&amp;diff=23834</id>
		<title>I2C:WriteRegisters8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters8&amp;diff=23834"/>
		<updated>2026-05-28T12:41:11Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000B|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input buffer pointer|1}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000B|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Writes the given buffer sequentially to a range of 8-bit I2C registers of the specified device.&lt;br /&gt;
&lt;br /&gt;
The maximum input buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x10 for the Old3DS version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, writing a buffer of consisting of &amp;lt;code&amp;gt;{ 0xAA, 0xBB, 0xCC, 0xDD }&amp;lt;/code&amp;gt; with starting register 0x5 would do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[0x5] = 0xAA&lt;br /&gt;
    reg[0x6] = 0xBB&lt;br /&gt;
    reg[0x7] = 0xCC&lt;br /&gt;
    reg[0x8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:MultiWriteRegister16&amp;diff=23833</id>
		<title>I2C:MultiWriteRegister16</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:MultiWriteRegister16&amp;diff=23833"/>
		<updated>2026-05-28T12:40:54Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0008|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u16, register}}&lt;br /&gt;
{{IPC/RequestEntry|u16, value}}&lt;br /&gt;
{{IPC/RequestEntry|u32, number of device IDs}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input device IDs pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0008|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Writes to the same register across multiple I2C devices.&lt;br /&gt;
&lt;br /&gt;
The maximum input buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x10 for the Old3DS version.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:MultiReplaceRegisterBits16&amp;diff=23832</id>
		<title>I2C:MultiReplaceRegisterBits16</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:MultiReplaceRegisterBits16&amp;diff=23832"/>
		<updated>2026-05-28T12:40:36Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0004|4|2}}&lt;br /&gt;
{{IPC/RequestEntry|u16, register}}&lt;br /&gt;
{{IPC/RequestEntry|u16, value}}&lt;br /&gt;
{{IPC/RequestEntry|u16, mask}}&lt;br /&gt;
{{IPC/RequestEntry|u32, number of device IDs}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input device IDs pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0004|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Replaces bits in the same register across multiple devices according to the given mask and value. This is similar to [[I2C:ReplaceRegisterBits8]], except this version uses 16 bit registers/masks/values.&lt;br /&gt;
&lt;br /&gt;
The maximum input buffer size is 0x200 for the New3DS i2c-sysmodule, and 0x10 for the Old3DS version.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23831</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23831"/>
		<updated>2026-05-28T12:27:43Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* I2C Service Names */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= I2C Service Names =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Accessible [[I2C_Registers#I2C_Devices|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| 7, 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
New3DS-sysmodule specific services:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]]. When the specified deviceid isn&#039;t accessible, error 0xE0A02FEA is returned.&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadDeviceRaw&amp;diff=23830</id>
		<title>I2C:ReadDeviceRaw</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadDeviceRaw&amp;diff=23830"/>
		<updated>2026-05-28T12:25:50Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=  {{IPC/Request}} {{IPC/RequestHeader|0x0015|1|0}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEnd}}  =Request Static Buffers= {{IPC/RequestStaticBuffers}} {{#vardefine:ipc_offset|0}} {{IPC/TranslateStaticBuffer|Output buffer pointer|0}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0015|1|2}} {{IPC/RequestEntry|Result code}} {{IPC/TranslateStaticBuffer|Output buffer pointer|0}} {{IPC/RequestEnd}}  =Descrip...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0015|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0015|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a buffer from the given I2C device raw, without selecting a specific register first.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:ReadDeviceRaw8]], except this allows for reading a buffer instead of a single value.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:WriteDeviceRaw&amp;diff=23829</id>
		<title>I2C:WriteDeviceRaw</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:WriteDeviceRaw&amp;diff=23829"/>
		<updated>2026-05-28T12:20:13Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=  {{IPC/Request}} {{IPC/RequestHeader|0x0014|2|2}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEntry|u32, size}} {{IPC/TranslateStaticBuffer|Input buffer pointer|1}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0014|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= Writes a buffer to the given I2C device raw, without selecting a specific register first.  This is similar to I2C:Writ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0014|2|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input buffer pointer|1}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0014|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Writes a buffer to the given I2C device raw, without selecting a specific register first.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:WriteDeviceRaw8]], except this allows for writing a buffer instead of a single value.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadDeviceRaw8&amp;diff=23828</id>
		<title>I2C:ReadDeviceRaw8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadDeviceRaw8&amp;diff=23828"/>
		<updated>2026-05-28T12:17:58Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=  {{IPC/Request}} {{IPC/RequestHeader|0x0013|1|0}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0013|2|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEntry|u8, value read from register}} {{IPC/RequestEnd}}  =Description= Reads from the given I2C device raw, without selecting a specific register first.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0013|1|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0013|2|0}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/RequestEntry|u8, value read from register}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads from the given I2C device raw, without selecting a specific register first.&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadRegistersBuffer8&amp;diff=23827</id>
		<title>I2C:ReadRegistersBuffer8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadRegistersBuffer8&amp;diff=23827"/>
		<updated>2026-05-28T12:16:45Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=   {{IPC/Request}} {{IPC/RequestHeader|0x0012|3|2}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEntry|u8, starting register}} {{IPC/RequestEntry|u32, size}} {{IPC/MapPointerW|Output buffer pointer}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0012|1|2}} {{IPC/RequestEntry|Result code}} {{IPC/MapPointerW|Output buffer pointer}} {{IPC/RequestEnd}}  =Description= Reads a range of 8-bit I2C registers of the s...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0012|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/MapPointerW|Output buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0012|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/MapPointerW|Output buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a range of 8-bit I2C registers of the specified device sequentially to the given buffer.&lt;br /&gt;
&lt;br /&gt;
Similar to [[I2C:ReadRegisters8]], except this version uses a mapped buffer instead of a static buffer.&lt;br /&gt;
&lt;br /&gt;
For example, assuming:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[5] = 0xAA, reg[6] = 0xBB, reg[7] = 0xCC, reg[8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reading 4 bytes with starting register 5 would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    outbuf[0] = 0xAA&lt;br /&gt;
    outbuf[1] = 0xBB&lt;br /&gt;
    outbuf[2] = 0xCC&lt;br /&gt;
    outbuf[3] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:WriteRegistersBuffer8&amp;diff=23826</id>
		<title>I2C:WriteRegistersBuffer8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:WriteRegistersBuffer8&amp;diff=23826"/>
		<updated>2026-05-28T12:15:21Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=   {{IPC/Request}} {{IPC/RequestHeader|0x0011|3|2}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEntry|u8, starting register}} {{IPC/RequestEntry|u32, size}} {{IPC/MapPointerR|Input buffer pointer}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0011|1|2}} {{IPC/RequestEntry|Result code}} {{IPC/MapPointerR|Input buffer pointer}} {{IPC/RequestEnd}}  =Description= Writes the given buffer sequentially to a range...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0011|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/MapPointerR|Input buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0011|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/MapPointerR|Input buffer pointer}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Writes the given buffer sequentially to a range of 8-bit I2C registers of the specified device.&lt;br /&gt;
&lt;br /&gt;
Similar to [[I2C:WriteRegisters8]], except this version uses a mapped buffer instead of a static buffer.&lt;br /&gt;
&lt;br /&gt;
For example, writing a buffer of consisting of &amp;lt;code&amp;gt;{ 0xAA, 0xBB, 0xCC, 0xDD }&amp;lt;/code&amp;gt; with starting register 0x5 would do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[0x5] = 0xAA&lt;br /&gt;
    reg[0x6] = 0xBB&lt;br /&gt;
    reg[0x7] = 0xCC&lt;br /&gt;
    reg[0x8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23825</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23825"/>
		<updated>2026-05-28T12:07:25Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* I2C Service Names */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= I2C Service Names =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Accessible [[I2C_Registers|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| 7, 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
New3DS-sysmodule specific services:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]]. When the specified deviceid isn&#039;t accessible, error 0xE0A02FEA is returned.&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters16&amp;diff=23824</id>
		<title>I2C:ReadRegisters16</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters16&amp;diff=23824"/>
		<updated>2026-05-28T12:01:32Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=   {{IPC/Request}} {{IPC/RequestHeader|0x0010|3|0}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEntry|u16, starting register}} {{IPC/RequestEntry|u32, count}} {{IPC/RequestEnd}}  =Request Static Buffers= {{IPC/RequestStaticBuffers}} {{#vardefine:ipc_offset|0}} {{IPC/TranslateStaticBuffer|Output buffer pointer|0}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x0010|1|2}} {{IPC/RequestEntry|Result code}} {{IPC...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x0010|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u16, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, count}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x0010|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a range of 16-bit I2C registers of the specified device sequentially to the given buffer.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:ReadRegisters8]], except this reads from 16-bit registers.&lt;br /&gt;
&lt;br /&gt;
For example, assuming:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[5] = 0xAAAA, reg[6] = 0xBBBB, reg[7] = 0xCCCC, reg[8] = 0xDDDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reading with count 4 and starting register 5 would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    outbuf[0] = 0xAAAA&lt;br /&gt;
    outbuf[1] = 0xBBBB&lt;br /&gt;
    outbuf[2] = 0xCCCC&lt;br /&gt;
    outbuf[3] = 0xDDDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23823</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23823"/>
		<updated>2026-05-28T11:57:52Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* I2C Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= I2C Service Names =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Accessible [[I2C_Registers|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 7, 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| Only available via the New3DS i2c sysmodule.&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| Only available via the New3DS i2c sysmodule.&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]]. When the specified deviceid isn&#039;t accessible, error 0xE0A02FEA is returned.&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23822</id>
		<title>I2C Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C_Services&amp;diff=23822"/>
		<updated>2026-05-28T11:56:07Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* I2C Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= I2C Service Names =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Service names&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Accessible [[I2C_Registers|deviceIDs]]&lt;br /&gt;
!  Service used by sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::MCU&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 0, 3&lt;br /&gt;
| [[MCU_Services|MCU]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::CAM&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 1, 2, 4&lt;br /&gt;
| [[Camera_Services|Camera]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::LCD&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 5, 6&lt;br /&gt;
| [[GSP_Services|GSP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::DEB&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 7, 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::HID&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 9, 10, 11, 12&lt;br /&gt;
| [[HID_Services|HID]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::IR&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 13, and additionally for New3DS i2c module: 17&lt;br /&gt;
| [[IR_Services|IR]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::EEP&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| 14&lt;br /&gt;
| [[Config_Services|Cfg]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::NFC&amp;quot;&lt;br /&gt;
| Only available via the New3DS i2c sysmodule.&lt;br /&gt;
| 15&lt;br /&gt;
| New3DS [[NFC_Services|NFC]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;i2c::QTM&amp;quot;&lt;br /&gt;
| Only available via the New3DS i2c sysmodule.&lt;br /&gt;
| 16&lt;br /&gt;
| New3DS [[QTM_Services|QTM]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each I2C service can only access certain I2C [[I2C_Registers|device(s)]]. When the specified deviceid isn&#039;t accessible, error 0xE0A02FEA is returned.&lt;br /&gt;
&lt;br /&gt;
= I2C Service =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header !! Description !! Available since system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010100 || [[I2C:ReplaceRegisterBits8|ReplaceRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0 || [[I2C:SetRegisterBits8|SetRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000300C0 || [[I2C:ClearRegisterBits8|ClearRegisterBits8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040102 || [[I2C:MultiReplaceRegisterBits16|MultiReplaceRegisterBits16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0 || [[I2C:WriteRegister8|WriteRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080 || [[I2C:WriteDeviceRaw8|WriteDeviceRaw8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000700C0 || [[I2C:WriteRegister16|WriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000800C2 || [[I2C:MultiWriteRegister16|MultiWriteRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090080 || [[I2C:ReadRegister8|ReadRegister8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0080 || [[I2C:ReadRegister16|ReadRegister16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B00C2 || [[I2C:WriteRegisters8|WriteRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C00C2 || [[I2C:WriteRegisters16|WriteRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D00C0 || [[I2C:ReadRegisters8|ReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E00C2 || [[I2C:WriteRegisters8_2|WriteRegisters8_2]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F00C0 || [[I2C:LegacyReadRegisters8|LegacyReadRegisters8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C0 || [[I2C:ReadRegisters16|ReadRegisters16]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C2 || [[I2C:WriteRegistersBuffer8|WriteRegistersBuffer8]] || All&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C2 || [[I2C:ReadRegistersBuffer8|ReadRegistersBuffer8]] || All&lt;br /&gt;
|}&lt;br /&gt;
and, for the New3DS-specific version of the sysmodule (though technically the Old3DS supports these commands as well):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130040 || [[I2C:ReadDeviceRaw8|ReadDeviceRaw8]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00140082 || [[I2C:WriteDeviceRaw|WriteDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00150080 || [[I2C:ReadDeviceRaw|ReadDeviceRaw]] || [[8.0.0-18]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module.&lt;br /&gt;
&lt;br /&gt;
Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:LegacyReadRegisters8&amp;diff=23821</id>
		<title>I2C:LegacyReadRegisters8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:LegacyReadRegisters8&amp;diff=23821"/>
		<updated>2026-05-28T11:53:25Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=  {{IPC/Request}} {{IPC/RequestHeader|0x000F|3|0}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEntry|u8, starting register}} {{IPC/RequestEntry|u32, size}} {{IPC/RequestEnd}}  =Request Static Buffers= {{IPC/RequestStaticBuffers}} {{#vardefine:ipc_offset|0}} {{IPC/TranslateStaticBuffer|Output buffer pointer|0}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x000F|1|2}} {{IPC/RequestEntry|Result code}} {{IPC/Tr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000F|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000F|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a range of 8-bit I2C registers of the specified device sequentially to the given buffer.&lt;br /&gt;
&lt;br /&gt;
This is similar to [[I2C:ReadRegisters8]] except:&lt;br /&gt;
* Before selecting the device, this waits 1500ns.&lt;br /&gt;
* Before reading the first byte and after reading the last byte, this waits 15µs.&lt;br /&gt;
&lt;br /&gt;
For example, assuming:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[5] = 0xAA, reg[6] = 0xBB, reg[7] = 0xCC, reg[8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reading 4 bytes with starting register 5 would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    outbuf[0] = 0xAA&lt;br /&gt;
    outbuf[1] = 0xBB&lt;br /&gt;
    outbuf[2] = 0xCC&lt;br /&gt;
    outbuf[3] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters8_2&amp;diff=23820</id>
		<title>I2C:WriteRegisters8 2</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:WriteRegisters8_2&amp;diff=23820"/>
		<updated>2026-05-28T11:47:02Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Created page with &amp;quot;=Request=   {{IPC/Request}} {{IPC/RequestHeader|0x000E|3|2}} {{IPC/RequestEntry|u8, device ID}} {{IPC/RequestEntry|u8, starting register}} {{IPC/RequestEntry|u32, size}} {{IPC/TranslateStaticBuffer|Input buffer pointer|1}} {{IPC/RequestEnd}}  =Response=  {{IPC/Request}} {{#vardefine:ipc_offset|0}} {{IPC/RequestHeader|0x000E|1|0}} {{IPC/RequestEntry|Result code}} {{IPC/RequestEnd}}  =Description= This is identical to I2C:WriteRegisters8.  Writes the given buffer seque...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000E|3|2}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Input buffer pointer|1}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000E|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 is identical to [[I2C:WriteRegisters8]].&lt;br /&gt;
&lt;br /&gt;
Writes the given buffer sequentially to a range of 8-bit I2C registers of the specified device.&lt;br /&gt;
&lt;br /&gt;
For example, writing a buffer of consisting of &amp;lt;code&amp;gt;{ 0xAA, 0xBB, 0xCC, 0xDD }&amp;lt;/code&amp;gt; with starting register 0x5 would do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[0x5] = 0xAA&lt;br /&gt;
    reg[0x6] = 0xBB&lt;br /&gt;
    reg[0x7] = 0xCC&lt;br /&gt;
    reg[0x8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters8&amp;diff=23819</id>
		<title>I2C:ReadRegisters8</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=I2C:ReadRegisters8&amp;diff=23819"/>
		<updated>2026-05-28T11:45:47Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: /* Request Static Buffers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{IPC/RequestHeader|0x000D|3|0}}&lt;br /&gt;
{{IPC/RequestEntry|u8, device ID}}&lt;br /&gt;
{{IPC/RequestEntry|u8, starting register}}&lt;br /&gt;
{{IPC/RequestEntry|u32, size}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Request Static Buffers=&lt;br /&gt;
{{IPC/RequestStaticBuffers}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
{{#vardefine:ipc_offset|0}}&lt;br /&gt;
{{IPC/RequestHeader|0x000D|1|2}}&lt;br /&gt;
{{IPC/RequestEntry|Result code}}&lt;br /&gt;
{{IPC/TranslateStaticBuffer|Output buffer pointer|0}}&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Reads a range of 8-bit I2C registers of the specified device sequentially to the given buffer.&lt;br /&gt;
&lt;br /&gt;
For example, assuming:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    reg[5] = 0xAA, reg[6] = 0xBB, reg[7] = 0xCC, reg[8] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then reading 4 bytes with starting register 5 would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    outbuf[0] = 0xAA&lt;br /&gt;
    outbuf[1] = 0xBB&lt;br /&gt;
    outbuf[2] = 0xCC&lt;br /&gt;
    outbuf[3] = 0xDD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23818</id>
		<title>Template:IPC/TranslateStaticBuffer</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23818"/>
		<updated>2026-05-28T11:45:37Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000002 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 14) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 10)}} for [[IPC#Static_Buffer_Translation|static buffer]] (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/RequestStaticBuffers&amp;diff=23817</id>
		<title>Template:IPC/RequestStaticBuffers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/RequestStaticBuffers&amp;diff=23817"/>
		<updated>2026-05-28T11:44:59Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The handler for this IPC command expects the following 0x100-bytes after the beginning of the above command buffer:&lt;br /&gt;
{{IPC/Request}}&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23816</id>
		<title>Template:IPC/TranslateStaticBuffer</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23816"/>
		<updated>2026-05-28T11:44:05Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: Undo revision 23815 by TimmSkiller (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000002 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 14) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 10)}} for [[IPC#Static_Buffer_Translation|static buffer]] (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23815</id>
		<title>Template:IPC/TranslateStaticBuffer</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23815"/>
		<updated>2026-05-28T11:43:44Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000002 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 14) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 10)}} for [[IPC#Static_Buffer_Translation|static buffer]] (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23814</id>
		<title>Template:IPC/TranslateStaticBuffer</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23814"/>
		<updated>2026-05-28T11:39:10Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000002 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 14) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 10)}} for [[IPC#Static_Buffer_Translation|static buffer]] (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/RequestStaticBuffers&amp;diff=23813</id>
		<title>Template:IPC/RequestStaticBuffers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/RequestStaticBuffers&amp;diff=23813"/>
		<updated>2026-05-28T11:34:03Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The handler for this IPC command expects the following 0x100-bytes after the beginning of the above command buffer:&lt;br /&gt;
{{IPC/Request}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23812</id>
		<title>Template:IPC/TranslateStaticBuffer</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/TranslateStaticBuffer&amp;diff=23812"/>
		<updated>2026-05-28T11:33:41Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{IPC/Request|ipc_offset_prefix=n&amp;amp;nbsp;+&amp;amp;nbsp;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEntry|&#039;&#039;{{Tooltip|Descriptor|0x00000002 {{!}} (size &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 14) {{!}} ({{{2}}} &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;&amp;lt;/nowiki&amp;gt; 10)}} for [[IPC#Static_Buffer_Translation|static buffer]] (id {{{2}}})&#039;&#039;|descstyle=border-bottom-style:dashed}}&lt;br /&gt;
{{IPC/RequestEntry|{{{1}}}|descstyle=border-top-style:none}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{IPC/RequestEnd}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/Request&amp;diff=23811</id>
		<title>Template:IPC/Request</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/Request&amp;diff=23811"/>
		<updated>2026-05-28T11:33:16Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#vardefine:ipc_offset|{{{ipc_offset|0}}}}}{{#vardefine:ipc_offset_prefix|{{{ipc_offset_prefix|}}}}}{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  {{{1|Index}}} Word !! Description&amp;lt;noinclude&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| n&lt;br /&gt;
| …&lt;br /&gt;
|}[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/Request&amp;diff=23810</id>
		<title>Template:IPC/Request</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/Request&amp;diff=23810"/>
		<updated>2026-05-28T11:32:41Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#vardefine:ipc_offset|{{{ipc_offset|0}}}}}{{#vardefine:ipc_offset_prefix|{{{ipc_offset_prefix|}}}}}{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  {{{1|Index}}} Word !! Description&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| n&lt;br /&gt;
| …&lt;br /&gt;
|}[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Template:IPC/RequestStaticBuffers&amp;diff=23809</id>
		<title>Template:IPC/RequestStaticBuffers</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Template:IPC/RequestStaticBuffers&amp;diff=23809"/>
		<updated>2026-05-28T11:32:20Z</updated>

		<summary type="html">&lt;p&gt;TimmSkiller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The handler for this IPC command expects the following 0x100-bytes after the beginning of the above command buffer:&lt;br /&gt;
{{IPC/Request}}&amp;lt;noinclude&amp;gt;[[Category:IPC message contents templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TimmSkiller</name></author>
	</entry>
</feed>