<?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=LiquidFenrir</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=LiquidFenrir"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/LiquidFenrir"/>
	<updated>2026-04-16T04:45:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=BCMA&amp;diff=23700</id>
		<title>BCMA</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=BCMA&amp;diff=23700"/>
		<updated>2025-10-27T16:07:38Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: Add other observed region/language codes (found in fully region-free titles like later pkmn ones)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BCMA is the file format used for the electronic manuals on the Nintendo 3DS. It presumably stands for &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;C&#039;&#039;&#039;TR &#039;&#039;&#039;Ma&#039;&#039;&#039;nual.&lt;br /&gt;
&lt;br /&gt;
== Region and language codes ==&lt;br /&gt;
In several places, three letter uppercase region codes and two letter lowercase language codes are used. These will be indicated by the italic placeholders &#039;&#039;REG&#039;&#039; and &#039;&#039;la&#039;&#039; respectively on this page.&lt;br /&gt;
&lt;br /&gt;
The following region and language codes are known:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Region code&lt;br /&gt;
! Region&lt;br /&gt;
! Language code&lt;br /&gt;
! Language&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;| EUR&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;| Europe&lt;br /&gt;
| de&lt;br /&gt;
| German&lt;br /&gt;
|-&lt;br /&gt;
| en&lt;br /&gt;
| British English&lt;br /&gt;
|-&lt;br /&gt;
| fr&lt;br /&gt;
| French&lt;br /&gt;
|-&lt;br /&gt;
| es&lt;br /&gt;
| Spanish&lt;br /&gt;
|-&lt;br /&gt;
| it&lt;br /&gt;
| Italian&lt;br /&gt;
|-&lt;br /&gt;
| nl&lt;br /&gt;
| Dutch&lt;br /&gt;
|-&lt;br /&gt;
| pt&lt;br /&gt;
| Portuguese&lt;br /&gt;
|-&lt;br /&gt;
| ru&lt;br /&gt;
| Russian&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| USA&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| America&lt;br /&gt;
| en&lt;br /&gt;
| American English&lt;br /&gt;
|-&lt;br /&gt;
| es&lt;br /&gt;
| American Spanish&lt;br /&gt;
|-&lt;br /&gt;
| fr&lt;br /&gt;
| American French&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| JPN&lt;br /&gt;
| Japan&lt;br /&gt;
| ja&lt;br /&gt;
| Japanese&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CHN&lt;br /&gt;
| China&lt;br /&gt;
| sc&lt;br /&gt;
| Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| TWN&lt;br /&gt;
| Taiwan&lt;br /&gt;
| tc&lt;br /&gt;
| Traditional Chinese&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| KOR&lt;br /&gt;
| South Korea&lt;br /&gt;
| ko&lt;br /&gt;
| Korean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Top-level archive overview ==&lt;br /&gt;
A BCMA file is a regular, uncompressed [[DARC]] archive which contains a set of LZ10-compressed DARC archives. These subarchives contoin files containing either textures in the [[BCLIM format]] or metadata and manual pages in the binary [[CLYT format]].&lt;br /&gt;
&lt;br /&gt;
At least the following archives should be found in the top level archive:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Archive path &lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[#BcmaInfo.arc|./BcmaInfo.arc]]&lt;br /&gt;
| Archive containing metadata about this manual, such as available languages and version information.&lt;br /&gt;
|-&lt;br /&gt;
| [[#REG_la_index.arc|./&#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;_index.arc]] &lt;br /&gt;
| Archive containing the table of contents for a specific locale.&lt;br /&gt;
|-&lt;br /&gt;
| [[#REG_la_size.arc|./&#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;_large.arc]]&lt;br /&gt;
| Archive containing the pages of the manual in a large font size.&lt;br /&gt;
|-&lt;br /&gt;
| [[#REG_la_size.arc|./&#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;_small.arc]]&lt;br /&gt;
| Archive containing the pages of the manual in a small font size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other archives not named here may be present as well. Usually, these contain locale specific images.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BcmaInfo.arc ==&lt;br /&gt;
This archive has a single BCLYT file located in &#039;&#039;./blyt/BcmaInfo.bclyt&#039;&#039;. This file contains the following panes, all direct children of the RootPane:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| Pane name&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| Pane type&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| User data&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| Other info&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Key&lt;br /&gt;
! Type&lt;br /&gt;
! Value description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| LangInfo&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| pan1&lt;br /&gt;
| LangNum&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The number of languages following this property&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|This pane lists all languages in this manual.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Lang_&#039;&#039;xxx&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| &#039;&#039;xxx&#039;&#039; is a number from 000 until the value of &#039;&#039;LangNum&#039;&#039;. This value is a language-region pair in the form of &#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| RegionInfo&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| pan1&lt;br /&gt;
| RegionNum&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The number of regions following this property&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Region_&#039;&#039;xxx&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| &#039;&#039;xxx&#039;&#039; is a number from 000 until the value of &#039;&#039;RegionNum&#039;&#039;. This value is a region name in the form of &#039;&#039;REG&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| &#039;&#039;REG&#039;&#039;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| pan1&lt;br /&gt;
| LangNum&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The number of languages following this property&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| This pane lists all languages in the region indicated by the name of this pane. There is one pane for every region listed in the &#039;&#039;RegInfo&#039;&#039; pane.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Lang_&#039;&#039;xxx&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| &#039;&#039;xxx&#039;&#039; is a number from 000 until the value of &#039;&#039;LangNum&#039;&#039;. This value is a language-region pair in the form of &#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| &#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| txt1&lt;br /&gt;
| TexResNum&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The number of texture resources following this property&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| This pane lists all additional archives with locale-dependent textures that should be loaded. The text string of this text pane is set to the localized name of the language. There is an instance of this pane for every language listed in the &#039;&#039;LangInfo&#039;&#039; pane.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| TexRes_&#039;&#039;xxxx&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| &#039;&#039;xxxx&#039;&#039; is a number from 0000 until the value of &#039;&#039;TexResNum&#039;&#039;. This value is a file name referring to an archive in the top-level BCMA file, for example &#039;&#039;Common_texture.arc&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| VersionInfo&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| pan1&lt;br /&gt;
| CurrentVersion&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The version of the file format. Only the value 2 has been found so far.&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Description&lt;br /&gt;
| String&lt;br /&gt;
| Contains a human-readable description about the export settings and software. For example, the Kid Icarus manual contains &amp;quot;Multi Region (Old Style Langinfo Include). (ManualEditor 0.33.0.0)&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All other properties of the panes seem to be set to a default value and do not seem to matter.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;_index.arc ==&lt;br /&gt;
This archive contains the table of contents for a certain language. This archive contains exactly one file, &#039;&#039;./blyt/Index.bclyt&#039;&#039;, which contains the following panes, all children of the RootPane:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| Pane name&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| Pane type&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| User data&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| Other info&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Key&lt;br /&gt;
! Type&lt;br /&gt;
! Value description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;| MetaData&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;| pan1&lt;br /&gt;
| PageNum&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The amount of pages in this manual&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| CategoryNum&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The amount of categories in this manual.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| SplitNumL&lt;br /&gt;
| Int[&#039;&#039;PageNum&#039;&#039;]&lt;br /&gt;
| Each integer in this array maps to the amount of parts each page in the manual with the large font size has been split.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| SplitNumS&lt;br /&gt;
| Int[&#039;&#039;PageNum&#039;&#039;]&lt;br /&gt;
| Each integer in this array maps to the amount of parts each page in the manual with the small font size has been split.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| PageTitle_&#039;&#039;xxx&#039;&#039;&lt;br /&gt;
| txt1&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;| &#039;&#039;None&#039;&#039;&lt;br /&gt;
| The text of this textbox contains the page title of the page at index &#039;&#039;xxx&#039;&#039;, where &#039;&#039;xxx&#039;&#039; ranges from 000 until &#039;&#039;PageNum&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| Category_&#039;&#039;xxx&#039;&#039;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| txt1&lt;br /&gt;
| IsValid&lt;br /&gt;
| Int[1]&lt;br /&gt;
| Either 0 or 1, whether this category is valid. This seems to be always 0 for the first category, usually named &#039;&#039;__CATEGORY_INVALID__&#039;&#039;. Other sections have this set to 1.&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| This pane describes each category. The text of the textbox is the localized name of the category shown to the user.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CategoryPageNum&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The amount of pages in this category&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| PageID_&#039;&#039;xxx&#039;&#039;&lt;br /&gt;
| Int[1]&lt;br /&gt;
| The &#039;&#039;xxx&#039;&#039; ranges from 000 until &#039;&#039;CategoryPageNum&#039;&#039;. The value refers to the same page number used in &#039;&#039;PageTitle_xxx&#039;&#039;, which should be part of this category.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;REG&#039;&#039;_&#039;&#039;la&#039;&#039;_&#039;&#039;size&#039;&#039;.arc ==&lt;br /&gt;
These archives actually contain the contents of a page in the manual. It contains the following files:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| ./blyt/Page_&#039;&#039;xxx&#039;&#039;_&#039;&#039;size&#039;&#039;_&#039;&#039;y&#039;&#039;.bclyt&lt;br /&gt;
| Contains the text and foreground images of page number &#039;&#039;xxx&#039;&#039;, part &#039;&#039;y&#039;&#039; and size &#039;&#039;size&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| ./blyt/Page_&#039;&#039;xxx&#039;&#039;_&#039;&#039;size&#039;&#039;_bg.bclyt&lt;br /&gt;
| Contains all background images on the page.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| ./blyt/Page_&#039;&#039;xxx&#039;&#039;_&#039;&#039;size&#039;&#039;_info.bclyt&lt;br /&gt;
| Could perhaps contain metadata from the manual editor?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the filenames, &#039;&#039;xxx&#039;&#039; should be replaced by the page number, starting from 000. &#039;&#039;size&#039;&#039; should be replaced by either &amp;quot;large&amp;quot; or &amp;quot;small&amp;quot;. Finally, &#039;&#039;y&#039;&#039; should be replaced by the page part, starting from 0.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20755</id>
		<title>Home Menu</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20755"/>
		<updated>2018-07-24T09:03:18Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* SaveData.dat */ since the 360 u64 array mentions it&amp;#039;s for NAND titles in the Launcher.dat definition, mention here it&amp;#039;s for SD titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Home Menu&#039;&#039;&#039; is the heart of the Nintendo 3DS. From there one can start games, applications, and access various processes including the friends list. It is launched by [[NS]], and is always running in the background in 3DS-mode except when other programID-high 00040030 applications like Internet Browser, Friend-List, etc are running. Home Menu is still running while [[System Settings]] is running, however the System Settings application does not allow directly returning to home-menu. The system will normally re-launch Home Menu when the Home Menu process crashes/terminates. When this re-launch occurs while Home Menu is active, Home Menu displays an error message which says to manually reboot the system.&lt;br /&gt;
&lt;br /&gt;
== System Versions ==&lt;br /&gt;
Nintendo devised a system, whereby updates would be delivered via two channels: &lt;br /&gt;
*Card Updates (CUP) - The Nintendo 3DS is updated with data from an [[System Update CFA|update partition]] on retail gamecard title. &lt;br /&gt;
*Network Updates (NUP) - The Nintendo 3DS is updated by downloading data from Nintendo&#039;s [[Title list|CDN]].&lt;br /&gt;
&lt;br /&gt;
CUPs will only deliver updates to core features, such as the Home Menu, [[Download Play]] etc. CUPs will not deliver updates to Network features, such as [[System Transfer]], [[Internet Browser]], [[StreetPass Mii Plaza]] or [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
NUPs can deliver updates to core features as well as (updated) Network Features.&lt;br /&gt;
&lt;br /&gt;
As a result of deciding to make a distinction between what content could be updated and how, Nintendo split the system version displayed by [[System Settings]] into two parts: [[CVer]] (Console Version) and [[NVer]] (Network Update Version). Represented as: &lt;br /&gt;
 &amp;lt;CVer Major&amp;gt;.&amp;lt;CVer Minor&amp;gt;.&amp;lt;CVer Micro&amp;gt;-&amp;lt;NUP Version&amp;gt;&amp;lt;NUP Region&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Console Version represents the version of the collectively installed core features. And the NUP Version represents the version of the collectively installed network features.&lt;br /&gt;
&lt;br /&gt;
So if a 3DS&#039; System Firmware read &#039;&#039;&#039;2.1.0-2U&#039;&#039;&#039;, it would indicate a console version of &#039;&#039;&#039;2.1.0&#039;&#039;&#039; and a NUP version of &#039;&#039;&#039;2U&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* CUPs can only update core content, so [[NVer]] is never updated with CUPs.&lt;br /&gt;
* NUPs will not update [[NVer]] if network features are not updated. (Best seen with the USA vs JPN/EUR 6.0.0 NUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CUPs are implemented by adding a [[System Update CFA]] to retail NCSD gamecard images. Nintendo generally creates CUPs after NUPs are released.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When updating the system from 4.5.0-6 to 4.5.0-10, the following titles are updated(in the order of title download+install): [[Health and Safety Information]], [[Nintendo 3DS Camera]], [[eShop]], [[System Transfer]], [[Internet Browser]], [[Title_list|0004009B00014102]], [[Title_list|0004009B00014202]], [[Title_list|0004009B00014302]], [[NVer]], and [[FIRM|AGB_FIRM]].&lt;br /&gt;
&lt;br /&gt;
=== System Versions List ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! System version &lt;br /&gt;
! Home Menu title version&lt;br /&gt;
! Release date &lt;br /&gt;
! Changelog &lt;br /&gt;
! System security [[3DS_System_Flaws|flaws]] fixed*&lt;br /&gt;
! Userland security [[3DS_Userland_Flaws|flaws]] fixed*&lt;br /&gt;
! 3DS-mode homebrew affected*&lt;br /&gt;
! CUP Released&lt;br /&gt;
! CDN Availability&lt;br /&gt;
! CDN Post Date&lt;br /&gt;
|-&lt;br /&gt;
| [[1.0.0-0|1.0.0-0]]&lt;br /&gt;
| 0&lt;br /&gt;
| February 26, 2011&lt;br /&gt;
| Shipped with 3DS on launch&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| February 18, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[1.1.0-1|1.1.0-1]] &lt;br /&gt;
| 0 &lt;br /&gt;
| February ?, 2011&lt;br /&gt;
| General bug fixes&lt;br /&gt;
Added 3D Video title to menu. (&amp;quot;For a Limited Time Only&amp;quot;)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| March 1, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.0.0-2|2.0.0-2]]&lt;br /&gt;
| 1029&lt;br /&gt;
| June 6/7, 2011&lt;br /&gt;
| [[eShop]] added, web browser available, [[System Transfer]] added. Full DSiWare data management available. [[Automatic_System_Update_Download|Automatic]] downloading for system updates added. Video stubbed.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 6, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-3|2.1.0-3]]&lt;br /&gt;
| 2049&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
| Fixes the Ridge Racer freeze.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-4|2.1.0-4]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
| System stability improvements and other adjustments.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.2.0-X|2.2.0]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 6, 2011&lt;br /&gt;
| CUP Only Release. Add &amp;quot;join game&amp;quot; feature to [[Friend List]]. Update from some game cards such as Super Mario 3D Land.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Unavailable&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-5|3.0.0-5]]&lt;br /&gt;
| 4111&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
| Added 3D video recording to the camera title, updated Mii Streetpass Plaza, [[System Transfer]] between 3DS systems available, improved eShop, home menu QR code scanning with QR codes containing URLs. [[Nintendo Zone]] is now always accessible, 3D video streaming support was added to NZone. This added support for running GBA VC titles via AGB_FIRM as well, support for GBA VC titles was also added to NATIVE_FIRM.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-6|3.0.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
| Only StreetPass Mii Plaza and the [[NVer]] title were updated. From Nintendo&#039;s release notes: &amp;quot;System stability improvements and other adjustments&amp;quot;.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.1.0-6|3.1.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown. Sighted preinstalled on some early European 3DS XLs.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [[4.0.0-7|4.0.0-7]]&lt;br /&gt;
| 5131&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
| Add folders to Home Menu, game patching added, buy more expensive games than 1000 yen in JPN. System titles for CHN, TWN, and KOR became available.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.1.0-8|4.1.0-8]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
| From changelog: &amp;quot;improvements to overall system stability and other minor adjustments&amp;quot;. Once updated to [[4.1.0-8]], the parental-controls PIN is no longer required for future system updates.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.2.0-9|4.2.0-9]]&lt;br /&gt;
| 6146&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
| Improved eShop safety for entering credit-card info, and behind the scenes improvements. Stored CC info will be deleted by this updated eShop, and can be re-entered again.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.3.0-10|4.3.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
| Updated eShop, bad word list and NZone hotspot list updated.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
| NZone hotspot list updated and TWL_FIRM updated for blocking flash cards.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10C]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
| China-only, the *only* updated title was [[System Settings]]. This title was updated to a version already available in TWN/KOR.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Available&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.5.0-10|4.5.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
| Flash-card block via updated TWL_FIRM and whitelist. NZone hotspot list updated as well.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[5.0.0-11|5.0.0-11]]&lt;br /&gt;
| 7172&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
| Many system titles including NATIVE_FIRM were updated, multiple vulnerabilities were fixed as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[5.1.0-11|5.1.0-11]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
| NATIVE_FIRM and NS were updated. According to the official change-log: &amp;quot;Resolves an issue that may prevent access to the System Settings or other features.&amp;quot;&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.0.0-11|6.0.0-12 (-11U)]]&lt;br /&gt;
| 8198&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Users can now back up save data for downloadable versions of Nintendo 3DS software and most Virtual Console games&amp;quot;. For EUR/JPN, the [[StreetPass Mii Plaza]] application and the [[Nintendo 3DS Camera]] application were updated. Other titles for all regions were updated as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-11|6.1.0-12 (-11U)]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-12U]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
| This USA-only update added the updated network features applications which were first released in JPN/EUR with the [[6.0.0-11|6.0.0-12 NUP]] update.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.2.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
| This update added support for the StreetPass relay feature, updated TWL_FIRM, and updated the Nintendo Zone hotspots list.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.3.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
| See [[6.3.0-12|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.4.0-12]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
| See [[6.4.0-12|this]](Only for the KOR and TWN regions).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 9230&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
| See [[7.0.0-13|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-14]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
| See [[7.1.0-14|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-15]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
| See [[7.1.0-15|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-16]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
| See [[7.1.0-16|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.2.0-17]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
| See [[7.2.0-17|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
| See [[8.0.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
| See [[8.1.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-19]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
| See [[8.1.0-19|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-0 New3DS]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
| See [[8.1.0-0 New3DS|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| 8.1.0-19&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
| Japan-only &amp;quot;update&amp;quot;, see [http://yls8.mtheall.com/ninupdates/reports.php?date=10-02-14_02-05-03&amp;amp;sys=ctr here]. The only change was that a new title([[New_3DS]]-only system application) was added, CVer/NVer titles were not even updated. The initial version of this [[Title_list|title]] is a stub.&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| v11272&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
| See [[9.0.0-20|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (K)&lt;br /&gt;
| Available&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.1.0-20J]]&lt;br /&gt;
| v14336(JPN-region title)&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
| Japan-only, see [[9.1.0-20J|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.2.0-20]]&lt;br /&gt;
| &lt;br /&gt;
| October 29, 2014&lt;br /&gt;
| See [[9.2.0-20|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 29, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 8, 2014&lt;br /&gt;
| See [[9.3.0-21|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 8, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.4.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 11, 2014&lt;br /&gt;
| See [[9.4.0-21|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 11, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| &lt;br /&gt;
| February 2, 2015&lt;br /&gt;
| See [[9.5.0-22|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| February 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-23]]&lt;br /&gt;
| &lt;br /&gt;
| March 2, 2015&lt;br /&gt;
| See [[9.5.0-23|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| As above&lt;br /&gt;
| Available&lt;br /&gt;
| March 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
| &lt;br /&gt;
| March 23, 2015&lt;br /&gt;
| See [[9.6.0-24|this]].&lt;br /&gt;
| See [[9.6.0-24|here]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 23, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.7.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| April 20, 2015&lt;br /&gt;
| See [[9.7.0-25|this]].&lt;br /&gt;
| Probably none?&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| April 20, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.8.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| June 1, 2015&lt;br /&gt;
| See [[9.8.0-25|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| June 1, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| &lt;br /&gt;
| July 13, 2015&lt;br /&gt;
| See [[9.9.0-26|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| July 13, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.0.0-27|10.0.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 8, 2015&lt;br /&gt;
| See [[10.0.0-27|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 8, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.1.0-27|10.1.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 14, 2015&lt;br /&gt;
| See [[10.1.0-27|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| September 14, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.2.0-28|10.2.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| October 19, 2015&lt;br /&gt;
| See [[10.2.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 19, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.3.0-28|10.3.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| November 9, 2015&lt;br /&gt;
| See [[10.3.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| November 9, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.4.0-29|10.4.0-29]]&lt;br /&gt;
| &lt;br /&gt;
| January 18, 2016&lt;br /&gt;
| See [[10.4.0-29|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Launching old Ironfall was blocked.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 18, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.5.0-30|10.5.0-30]]&lt;br /&gt;
| &lt;br /&gt;
| January 25, 2016&lt;br /&gt;
| See [[10.5.0-30|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| January 25, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.6.0-31|10.6.0-31]]&lt;br /&gt;
| &lt;br /&gt;
| February 22, 2016&lt;br /&gt;
| See [[10.6.0-31|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U)&lt;br /&gt;
| Available&lt;br /&gt;
| February 22, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| March 14, 2016&lt;br /&gt;
| See [[10.7.0-32|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 14, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.0.0-33|11.0.0-33]]&lt;br /&gt;
| &lt;br /&gt;
| May 9, 2016&lt;br /&gt;
| See [[11.0.0-33|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| May 9, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.1.0-34|11.1.0-34]]&lt;br /&gt;
| &lt;br /&gt;
| September 13, 2016&lt;br /&gt;
| See [[11.1.0-34|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.2.0-35|11.2.0-35]]&lt;br /&gt;
| &lt;br /&gt;
| October 24, 2016&lt;br /&gt;
| See [[11.2.0-35|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 24, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.3.0-36|11.3.0-36]]&lt;br /&gt;
| &lt;br /&gt;
| February 6, 2017&lt;br /&gt;
| See [[11.3.0-36|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 6, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.4.0-37|11.4.0-37]]&lt;br /&gt;
| &lt;br /&gt;
| April 10, 2017&lt;br /&gt;
| See [[11.4.0-37|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| April 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.5.0-38|11.5.0-38]]&lt;br /&gt;
| &lt;br /&gt;
| July 10, 2017&lt;br /&gt;
| See [[11.5.0-38|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.6.0-39|11.6.0-39]]&lt;br /&gt;
| &lt;br /&gt;
| September 18, 2017&lt;br /&gt;
| See [[11.6.0-39|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 18, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.7.0-40|11.7.0-40]]&lt;br /&gt;
| &lt;br /&gt;
| June 18, 2018&lt;br /&gt;
| See [[11.7.0-40|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 18, 2018&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot;: This includes known flaws, and any fixed flaws discovered via code bin-diff.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot; and &amp;quot;3DS-mode homebrew affected&amp;quot; only apply to the changes done with that specific system-update(&amp;quot;affected&amp;quot; does not include hax codebases breaking *just* due to updated codebins).&lt;br /&gt;
&lt;br /&gt;
[[Category:Nintendo Software]]&lt;br /&gt;
&lt;br /&gt;
== Auto-Boot Function ==&lt;br /&gt;
When the Home Menu is initially loaded by [[NS]], it checks the gamecard ExeFS:/[[SMDH|icon]] for the auto-boot flag. If the auto-boot flag is set, it will load the application on the cartridge and the home menu will not remain running in the background, or at least not in an operational state. Using software cues to return to the home menu, or sleep menu while in this state, causes a shutdown.&lt;br /&gt;
&lt;br /&gt;
Notable features of demo titles:&lt;br /&gt;
*Auto-boot demos generally disable the functionality of the home button.&lt;br /&gt;
*The &#039;&#039;New Super Mario Bros 2&#039;&#039; demo, retained the functionality of the home button, and had an timer which triggered the demo to quit after a period of inactivity.&lt;br /&gt;
&lt;br /&gt;
Auto-boot cartridges, can bypass some of the functions of the Home Menu. Auto Booted software:&lt;br /&gt;
* Doesn&#039;t show usage history in the [[Activity Log]]&lt;br /&gt;
* Bypasses Parental controls&lt;br /&gt;
* Bypasses Forced Game Card Updates&lt;br /&gt;
* Bypasses Initial 3DS Setup&lt;br /&gt;
* The console does not have a friends list presence.&lt;br /&gt;
* Is still subject to region lock(see below).&lt;br /&gt;
&lt;br /&gt;
Region lock is still active, so the home menu will refuse to launch demos with incorrect region lock will not load, displaying &amp;quot;An Error has Occurred&amp;quot;. However, game card update partition checks are not done, which allows launching demos that have region free encoding, but have an alternate(or even invalid) region update partition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following auto-boot paths can be used by Home Menu, checked in the same order listed below(the above gamecard auto-boot is checked before this):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and X&lt;br /&gt;
| This launches [[System Settings]] for touchscreen calibration.&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and Y&lt;br /&gt;
| This launches [[System Settings]] for circlepad calibration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is only checked when the low u16 from [[Config_Savegame|config]] block 0x00110000 is value zero(normally this is non-zero). Thus, the below is only handled when a system setup is required.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, X, Y, A, and B, a 3DS gamecard must be inserted as well.&lt;br /&gt;
| This launches the gamecard application. Note that pressing the HOME button in the gamecard application launched this way will only result in the system shutting down.&lt;br /&gt;
|-&lt;br /&gt;
| This is used when the above path isn&#039;t used.&lt;br /&gt;
| This launches System Settings for the system setup.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Region Lockout ==&lt;br /&gt;
&lt;br /&gt;
One of the Home Menu&#039;s functions, is to regulate region lockout. The region lockout data for any given title is held in the [[SMDH#BNR Region|ICN data]]. There are 6 regions of which have their own region lockout, Japan, USA, Europe(including Nintendo Australia), China, Taiwan and Korea. There is also a value which makes a title exempt from region lockout, and consequently accessible from any region of 3DS.&lt;br /&gt;
&lt;br /&gt;
The region-field stored in the [[SMDH|ICN-data]] is only checked when Home Menu itself launches a title, not when other titles use NS to have Home Menu launch titles. This isn&#039;t actually useful for gamecard region-free however, due to the gamecard system-updates, see below.&lt;br /&gt;
&lt;br /&gt;
Also note that while some gamecard games are mostly region-free(main CXI is identical for all regions of the gamecard), those gamecards can&#039;t actually be launched with all 3DS regions due to the gamecard system-update, see below. Note that the main CXI being identical for all regions of a gamecard also means the savedata keyY is identical for all regions of that gamecard too(except for old system-version &amp;lt;v2.2 games, in some cases, due to different cardIDs).&lt;br /&gt;
&lt;br /&gt;
=== Effects of Region Lockout  ===&lt;br /&gt;
Every 3DS title regardless of location (NAND/SD Card/Game Card) is subject to region lockout scrutiny by the Home Menu. And the home menu treats &#039;out-of-region&#039; titles by simply refusing to show them on the home menu. No messages are shown on the home menu to notify the user, the title is simply ignored. However out-of-region SD Card titles, will appear and quickly disappear, while all the SD Titles are being processed. In cases where access to the home menu GUI is not needed to launch the title (like in the case of kiosk demos), the home menu states an error has occurred, and launching of the title is stopped.&lt;br /&gt;
&lt;br /&gt;
=== Game Card Updates ===&lt;br /&gt;
Either intentionally a region lock mechanism or not, the function which checks the game card update partition returns an error when it is detected the update is for a region other than the 3DS&#039;s region (Most likely triggered by the absence of the correct CVer title). And errors returned from checking the update partition, will result in the home menu displaying &amp;quot;This Game Card cannnot be used&amp;quot;, when the user attempts to launch the title.&lt;br /&gt;
&lt;br /&gt;
== Home-menu [[SpotPass]] usage ==&lt;br /&gt;
&lt;br /&gt;
Home-menu originally used two domains with HTTPS for SpotPass. SpotPass stores this content in Home-menu&#039;s NAND shared extdata.&lt;br /&gt;
&lt;br /&gt;
* The system notifications are downloaded from: &amp;lt;nowiki&amp;gt;https://a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;/&amp;lt;langcode&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; Where langcode is the two-character language codes from [[Config Savegame#Languages|config]], and regionID is from the below table. &amp;lt;filename&amp;gt; is bashoX/sysmsgX where X is 0-3.&lt;br /&gt;
* https://pls.c.shop.nintendowifi.net/pl/upload This URL is used for uploading data from the home menu NAND shared extdata, it&#039;s unknown what this is used for. This data is uploaded every 24 hours.&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;https://npul.c.app.nintendowifi.net/p01/recv/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; This is used for uploading unknown data from extdata. &amp;lt;filename&amp;gt; can be one of the following:&lt;br /&gt;
** &amp;quot;phu&amp;quot;&lt;br /&gt;
** &amp;quot;tiu&amp;quot; The POST data contains a list of [[BOSS_Services|BOSS]] taskIDs etc. This seems to be only for Nintendo titles?(system+eShop apps)&lt;br /&gt;
** &amp;quot;splu&amp;quot;&lt;br /&gt;
** &amp;quot;sendmgn&amp;quot; For this it appears SpotPass does a HTTP POST with data originally from Launcher.dat?&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Region&lt;br /&gt;
! ID&lt;br /&gt;
|-&lt;br /&gt;
| JPN&lt;br /&gt;
| gWr4JXxb2mKTG3lq&lt;br /&gt;
|-&lt;br /&gt;
| NA&lt;br /&gt;
| uuI82221UKkqmtbp&lt;br /&gt;
|-&lt;br /&gt;
| EUR / Others&lt;br /&gt;
| UrXSeurnxhPrq7AS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SpotPass content payload for notifications begin with a header, followed by an [[SMDH|icon]] and the UTF-16 text, and various metadata.&lt;br /&gt;
&lt;br /&gt;
=== VersionList ===&lt;br /&gt;
During startup, Home Menu loads &amp;quot;/versionList.dat&amp;quot; from NAND extdata 0xf000000e. This is downloaded via SpotPass, the file-data downloaded via HTTPS here is raw (no SpotPass container):&lt;br /&gt;
* Retail: [https://tagaya-ctr.cdn.nintendo.net/tagaya/versionlist]&lt;br /&gt;
* Dev-unit: [https://tagaya-dev-ctr.cdn.nintendo.net/tagaya/versionlist] The titles listed in this are not available on the [[Title list|normal]] CDN.&lt;br /&gt;
&lt;br /&gt;
This is a list of title-updates available on the eShop, for regular app titles and update-titles. This is what Home Menu checks to determine whether the currently selected application needs to be updated or not. When an Internet connection is not available or wifi is disabled, Home Menu will skip VersionList handling/messages when you launch applications.&lt;br /&gt;
&lt;br /&gt;
File structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| The first u32 is normally 0x1, the rest is normally all-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| &amp;lt;Filesize-0x10&amp;gt;&lt;br /&gt;
| Title entries, 0x10-bytes each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Title entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 TitleID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 titleversion&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown u32, usually zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[BOSS_Services|BOSS]] usage notes ===&lt;br /&gt;
Home Menu uses 4 hard-coded NsDataIds: 0x1, 0x2, 0x3, and 0x4, under a loop in the same function for writing to &amp;quot;bashotorya.dat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Automatic System Update Download ==&lt;br /&gt;
See [[Automatic System Update Download]].&lt;br /&gt;
&lt;br /&gt;
== Home Menu Error Messages ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dialog Text&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;An error has occured. Please save your data ... then restart the system&amp;quot;&lt;br /&gt;
| This dialog is displayed when a system applet(including Home Menu) crashes/terminates. This dialog is also displayed for system errors as well.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Home Menu Themes ==&lt;br /&gt;
See [[Home_Menu/Themes|here]].&lt;br /&gt;
&lt;br /&gt;
As of [[11.0.0-33]] Home Menu themes are only supported with USA, EUR, and JPN. CHN Home Menu was last updated with v7.0, and TWN doesn&#039;t even have a Home Menu settings menu(just the old screen brightness config menu + an [[amiibo Settings]] icon on the right side of the browser icon).&lt;br /&gt;
&lt;br /&gt;
KOR Home Menu doesn&#039;t have the theme-settings menu button. While this does have the theme handling code, it isn&#039;t actually usable since extdataID 0x0 is used for theme-extdata for non-&amp;lt;JPN/USA/EUR&amp;gt; regions(which is invalid).&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[System_SaveData|NAND]] savedata ==&lt;br /&gt;
=== Launcher.dat ===&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;
| Launcher.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, cart launcher position on the home menu&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of NAND titleIDs. For an unused entry, the u64 value is ~0(in that case, the corresponding entries at 0xD9A/0x106A for this titleID are not used either). This is used for the icons displayed on the main Home Menu screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB51&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8, numbers of rows on the home menu, minus 1 (range 0..5) (with the enlarge/reduce option)&lt;br /&gt;
|-&lt;br /&gt;
| 0xB5C&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, position of the cursor on the home menu&lt;br /&gt;
|-&lt;br /&gt;
| 0xB5E&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, horizontal scrolling level (divided by the number of rows to get the actual number of columns hidden) on the home menu&lt;br /&gt;
|-&lt;br /&gt;
| 0xD80&lt;br /&gt;
| 0x2 or 0x4&lt;br /&gt;
| u16 or u32, number the next created folder will have (starts at 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9A&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| Array of 360 s16 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position, 0x0 for the very first icon, 0x1 for the next one and so on. This is completely linear, no X/Y coordinates. Implemented with the format-version for [[4.0.0-7|4.0.0-X]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x106A&lt;br /&gt;
| 0x168&lt;br /&gt;
| Array of 360 s8 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position. When an s8 here is -1(which is the normal value), the icon is located with the first chunk of icons(outbuf+0), otherwise the base address is outbuf+0xB40+&amp;lt;s8val*0x1E0&amp;gt;(which is equivalent to 60 icons * s8val). Implemented with the format-version for [[4.0.0-7|4.0.0-X]]. Corresponds to the id of the folder the icon is in, range -1..59, with -1 meaning not in a folder&lt;br /&gt;
|-&lt;br /&gt;
| 0x11DC&lt;br /&gt;
| 0x78&lt;br /&gt;
| Array of 60 s16 fields, corresponding to folders position (with -1 meaning the folder is deleted/not yet created)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1434&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Array of 60 u8 fields, the number of rows in each corresponding folder (defaults to 2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1470&lt;br /&gt;
| 0x78&lt;br /&gt;
| Array of 60 u16 fields, the position of the cursor in each corresponding folder (defaults to 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14E8&lt;br /&gt;
| 0x78&lt;br /&gt;
| Array of 60 u16 fields, the horizontal scroll level in each corresponding folder (divided by the number of rows to get the actual number of columns hidden) (defaults to 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1560&lt;br /&gt;
| 0x7F8&lt;br /&gt;
| Array of 60 utf-16 strings of length 0x22 (in bytes, so only 0x11 utf-16 characters) (not NULL-terminated), the name of each corresponding folder&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D58&lt;br /&gt;
| 0xF0&lt;br /&gt;
| Array of 60 u32, the number of each corresponding folder&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SD ExtData ==&lt;br /&gt;
The SD ExtData [[Extdata#Filesystem|File System]] for Home Menu introduced with [[2.0.0-2|2.0.0-X]] is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── SaveData.dat&lt;br /&gt;
     ├── Cache.dat&lt;br /&gt;
     └── CacheD.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
|  icon&lt;br /&gt;
|  Stubbed. Always image 00000002.&lt;br /&gt;
|  0x4 Bytes&lt;br /&gt;
|  n/a&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  SaveData.dat&lt;br /&gt;
|  Always image 00000003.&lt;br /&gt;
|  0x2cb0 Bytes (0x2da0 starting with [[4.0.0-7]])&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/SaveData.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  Cache.dat&lt;br /&gt;
|  Indexes and records details for the cached icon data. Always image 00000004.&lt;br /&gt;
|  0x1688 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/Cache.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  CacheD.dat&lt;br /&gt;
|  Cached icon data for Home Menu. Always image 00000005.&lt;br /&gt;
|  0x4cfe00 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/CacheD.dat Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cache.dat &amp;amp; CacheD.dat ===&lt;br /&gt;
These two files work in tandem to allow the home menu to cache icon data for applications which are presented on the Home Menu. The size of both files suggests a maximum cache size of 360 icons. Cache.dat stores details about the cache icon data, and CacheD.dat stores the icon data. The icon cache stores icon data for *all* applications shown on the Home Menu, this includes DSi NAND Titles, and DS(i) cartridges. The format of cached DS(i) icon data is not understood, but they are the same size as 3DS icon data (0x36c0).&lt;br /&gt;
&lt;br /&gt;
In Cache.dat the first 8 bytes are a header where the first byte is the format-version, then follows each icon slots&#039;s entry in the format:&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;
|  8&lt;br /&gt;
|  Title ID in Little Endian&lt;br /&gt;
|-&lt;br /&gt;
|  0x8&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|-&lt;br /&gt;
|  0xc&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All unused entries have the Title IDs filled with &amp;quot;0xff&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In CacheD.dat, the icon data is concatenated together, with the first icon at offset 0x0.&lt;br /&gt;
&lt;br /&gt;
=== SaveData.dat ===&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;
| SaveData.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of titleIDs(used with icons). Equivalent to the same array in Launcher.dat, but for SD titles.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB48&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 bool array with 360 entries. Some SD-only icon array. Probably an array for each icon present status? Each entry is only known to be set to 0x00 or 0x01, with the former being the default.&lt;br /&gt;
|-&lt;br /&gt;
| 0xCB0&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| s16 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF80&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13b8&lt;br /&gt;
| 0x8&lt;br /&gt;
| Theme entry structure for the regular theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13c0&lt;br /&gt;
| 0x8*10(0x50)&lt;br /&gt;
| Array of theme entry structures for theme [[9.3.0-21|shuffling]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x141b&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = one regular theme, 1 = multiple themes for theme [[9.3.0-21|shuffle]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The icon arrays above are handled exactly the same way as Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
When the theme cache is enabled via the above fields, Home Menu loads the cache at startup(if the used theme structure is valid).&lt;br /&gt;
&lt;br /&gt;
Theme entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Theme index: for DLC this is the content-index, for built-in themes this is an index for an array selecting the built-in theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero. This is the low 8-bits in the DLC titleID that this theme was originally loaded from.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| Theme type, the valid range is 0..5. 0 = none, 1 = built-in theme from Home Menu RomFS, 2 = theme data loaded from SD cache / content archive. 3 = ?, 4 = ?, 5 = ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When the theme-type is value1 the themeindex must be &amp;lt;9. When the theme-type is value2 the themeindex has to be non-zero, and the u8 at offset 0x4 must not be &amp;gt;=10.&lt;br /&gt;
&lt;br /&gt;
The theme-loader code (besides the AM &amp;lt;is-current-themeindex-DLC-installed&amp;gt; code) handles all theme-types &amp;gt;=2 the same way. However, it seems all DLC AM code involving checking the currently-used theme DLC only gets executed when the theme-type is value2. The code in the theme-loader for that also checks that a certain Home Menu state flag is non-zero, before running the AM DLC code(it&#039;s unknown where this flag value comes from).&lt;br /&gt;
&lt;br /&gt;
==== SaveData.dat format versions ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Version value&lt;br /&gt;
!  Filesize&lt;br /&gt;
!  Implemented with Home Menu system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0x2CB0&lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.0.0-20|9.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 (Latest version as of v10.6-v11.0 Home Menu)&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Home Menu code for writing the updated SaveData.dat to FS is broken when the filesize is smaller than expected due to being from an older format-version originally. When writing to the file, Home Menu checks the filesize then attempts to use [[FSFile:SetSize]] on mismatch, but [[FSFile:SetSize]] can&#039;t be used with extdata(error from [[FSFile:SetSize]] appears to be ignored). When writing to SaveData.dat the write-size is the one for the current format-version, but since extdata files are fixed-size this will only result in the first {original filesize} bytes being written(result-code = 0xE0E046C1).&lt;br /&gt;
&lt;br /&gt;
Basically, unless the extdata is deleted from the SD card FS manually, the SaveData.dat filesize will never be successfully updated from an old filesize to the current-format filesize by Home Menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[Home_Menu/Themes|Theme]] SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── ThemeManage.bin&lt;br /&gt;
     ├── BodyCache.bin&lt;br /&gt;
     ├── BgmCache.bin&lt;br /&gt;
     └── nsalist&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| ThemeManage.bin&lt;br /&gt;
| Theme management info. The filesize must match 0x800, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x800&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BodyCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS body_LZ.bin file. The filesize must match 0x150000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x150000&lt;br /&gt;
| 00000004&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| BgmCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS bgm.bcstm file. The filesize must match 0x337000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x337000&lt;br /&gt;
| 00000005&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| nsalist&lt;br /&gt;
| Contains the list of DLC themes(IDs+prices), downloaded via [[SpotPass]].&lt;br /&gt;
| &lt;br /&gt;
| 00000007&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin contain cached theme data for the currently used DLC theme. ThemeManage.bin is loaded by Home Menu during startup. The cached theme data is loaded at startup when a DLC theme is selected. This also contains theme-shop [[SpotPass]] data.&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin are all-zero when no theme is selected.&lt;br /&gt;
&lt;br /&gt;
Starting with [[9.3.0-21|9.3.0-X]] Home Menu can use more files in this extdata, for theme shuffling. &amp;quot;theme:/ThemeManage.bin&amp;quot; &amp;quot;theme:/BgmCache_%02d.bin&amp;quot; &amp;quot;theme:/BodyCache_rd.bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ThemeManage.bin ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally value 0x1?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached body_LZ.bin data.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached bgm.bcstm data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| When a DLC theme is selected, this is the content-index of the DLC theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually value 0x200 when the data in theme-cache is actually used?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total filesize is 0x800-bytes, normally the data starting at offset 0x1C is all-zero.&lt;br /&gt;
&lt;br /&gt;
When no theme is actually used,  the only non-zero fields are the following: the u32 stored at offset 0x0 in ThemeManage.bin is value 0x1, with offset 0x10 u32 set to value 0x1.&lt;br /&gt;
&lt;br /&gt;
== Home Menu badge SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── BadgeData.dat&lt;br /&gt;
     └── BadgeMngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
|-&lt;br /&gt;
| BadgeData.dat&lt;br /&gt;
| [[Home_Menu#BadgeData.dat|See below.]]&lt;br /&gt;
| 0xF4DF80&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BadgeMngFile.dat&lt;br /&gt;
| [[Home_Menu#BadgeMngFile.dat|See below.]]&lt;br /&gt;
| 0xD4A8&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeData.dat ===&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;
| 100 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Set Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x35E80&lt;br /&gt;
| 1000 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x250F80&lt;br /&gt;
| 100 * 0x2000&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 Badge Set Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0x318F80&lt;br /&gt;
| 1000 * 0x2800&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 + Tiled A4 64x64 Badge Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0xCDCF80&lt;br /&gt;
| 1000 * 0xA00&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 32x32 + Tiled A4 32x32 Badge Icons&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeMngFile.dat ===&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;
| u32, Must Be Zero&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Badge Sets&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Placed Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Set in Home Menu (0xFFFFFFFF = All Badges)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Column in All Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Nintendo Network ID Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x338&lt;br /&gt;
| Unknown (always zeros? unused?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x358&lt;br /&gt;
| 0x80&lt;br /&gt;
| Used Badge Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D8&lt;br /&gt;
| 0x10&lt;br /&gt;
| Used Badge Set Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E8&lt;br /&gt;
| 1000 * 0x28&lt;br /&gt;
| [[Home_Menu#BadgeInfo|BadgeInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xA028&lt;br /&gt;
| 100 * 0x30&lt;br /&gt;
| [[Home_Menu#BadgeSetInfo|BadgeSetInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2E8&lt;br /&gt;
| 360 * 0x18&lt;br /&gt;
| [[Home_Menu#BadgeLayoutSlot|BadgeLayoutSlot]] Entries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeIdentifier ====&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;
| u32, Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Sub ID (used for multi-part badges)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetIdentifier ====&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;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x2710)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeInfo ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Number Placed&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Quantity&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (packed data?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x10&lt;br /&gt;
| u64[2], Shortcut Title ID (twice, once per u64)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetInfo ====&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;
| 0x18&lt;br /&gt;
| [[Home_Menu#BadgeSetIdentifier|BadgeSetIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Start Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeLayoutSlot ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Folder (0xF0FF = Icon of a folder, 0xFFFFFFFF = No folder)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file size must match 0xD4A8, otherwise the Home Menu code returns an error.&lt;br /&gt;
&lt;br /&gt;
== Home Menu theme layout SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     └── MngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| MngFile.dat&lt;br /&gt;
| See below.&lt;br /&gt;
| 0x004D1280&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MngFile.dat ===&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;
| u32, must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| array of 8 u8, 0 if the corresponding layout slot is not set, 1 if it is&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x3000 * 8&lt;br /&gt;
| Start of the layout entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1800C&lt;br /&gt;
| 0xC&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x18010&lt;br /&gt;
| 0x2DA0 * 8&lt;br /&gt;
| Start of the [[Home_Menu#SaveData.dat|SaveData.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2ED10&lt;br /&gt;
| 0xD4A8 * 8&lt;br /&gt;
| Start of the [[Home_Menu#BadgeMngFile.dat|BadgeMngFile.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x99250&lt;br /&gt;
| 0x30&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x99280&lt;br /&gt;
| 256*3*8 * 400/8 * 8&lt;br /&gt;
| Start of the top screen (400x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F1280&lt;br /&gt;
| 256*3*8 * 320/8 * 8&lt;br /&gt;
| Start of the bottom screen (320x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Layout entries 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;
| 0x2558&lt;br /&gt;
| Exact copy of the entire Home Menu [[System_SaveData]] [[Home_Menu#Launcher.dat|Launcher.dat]], this is the actual layout data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2558&lt;br /&gt;
| 0xAA8&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize must match 0x004D1280, otherwise the Home Menu code returns an error. The saved Home Menu layouts are stored here.&lt;br /&gt;
&lt;br /&gt;
When saving a layout, the total layout field is increased, then a new layout entry is created with the contents of the current Home Menu [[System_SaveData]](NAND savedata) Launcher.dat + a screenshot of the main Home Menu screen is written. When loading a layout, Launcher.dat in savedata is written with the current Launcher.dat data already stored in memory(unknown if any data gets changed for it here), then data from the layout entry is copied into the Home Menu [[System_SaveData]] Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
Home Menu *only* accesses this file with the Home Menu layout-settings menu / when entering that menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu startup ==&lt;br /&gt;
The following is what Home Menu does at startup(converted from cmd-logs), from [[9.4.0-21]], in the same order Home Menu does it.&lt;br /&gt;
&lt;br /&gt;
Originally Home Menu mounted sdmc in main(), starting(?) with [[6.0.0-11]] Home Menu only has sdmc mounted while handling [[SD_Savedata_Backups]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Archive&lt;br /&gt;
!  Filename&lt;br /&gt;
!  Read size&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_init(), then srv_GetServiceHandle is used to initialize the service handles for the following services: [[NS_and_APT_Services|ns:s]], [[PTM_Services|ptm:sysm]], and [[Config_Services|cfg:s]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[CfgS:SecureInfoGetByte101]] and [[CfgS:GetLocalFriendCodeSeed]] are used, the output data from these are not used. If either of these return an error, Home Menu uses [[ERR:Throw]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Cfg:GetSystemModel]] is then used to initialize a Home Menu state field.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then loads the system language via [[CfgS:GetConfigInfoBlk2]], and uses [[Cfg:SecureInfoGetRegion]], to initialize Home Menu region/language state. Home Menu then uses [[Cfg:SecureInfoGetRegion]] again, then loads the [[Config_Savegame|CountryInfo]] via [[CfgS:GetConfigInfoBlk2]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu initializes [[Filesystem_services|fs:USER]] here. Home Menu then mounts the Home Menu CXI RomFS. Then Home Menu uses [[Filesystem_services|FSUSER:GetPriority]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts APT initialization / using APT service commands here. Eventually Home Menu then [[NSS:LaunchTitle|launches]] various system-modules.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu attempts to open NAND shared-[[extdata]] 0xe0000000, which will normally fail since it doesn&#039;t exist.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[Application_Manager_Services|AM]] command 0x00130040, with input u8 = value 0x0. Home Menu continues using APT commands after this.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[HID_Services|hid:SPVR]] service initialization is done here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTMSYSM:GetShellStatus]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read to check the auto-boot flag(see the auto-boot section on this page). The system-setup-required flag is then read here if needed, as mentioned under the auto-boot section of this page.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then uses cfg commands to load system language, region, and CountryInfo.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/menu_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/hud_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[NS_and_APT_Services|APT:GetSharedFont]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/font/Hud_JP.bcfnt&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Here Home Menu loads the [[Config_Savegame|cfg]] state for blkID 0x50005.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu loads the GPU shaders from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does DSP initialization then starts using DSP commands etc + loads sound data from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does GSP initialization.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[APT:GetCaptureInfo]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]], [[PTMSYSM:GetSoftwareClosedFlag]], and [[PTMSYSM:ClearSoftwareClosedFlag]]. Home Menu then uses [[PTM_Services|PTMSYSM:GetShellStatus]] 3 times in a row. Starting from here, Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]] frequently(presumably from a separate thread).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the archive for the Home Menu [[System_SaveData]] here. Then Home Menu attempts to open &amp;quot;/Launcher.dat&amp;quot; for reading, when successful Home Menu just closes the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| 0x2490&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| System CFA, titleID for USA: 0004009B00013302&lt;br /&gt;
| &amp;quot;/country.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[NS CFA]]&lt;br /&gt;
| &amp;quot;/ctr_backup_black_list&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu first reads 0x10-bytes from offset 0x0, then after that it reads the rest of the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] the camera system-module here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| NGWord bad word list CFA&lt;br /&gt;
| &amp;quot;/version.dat&amp;quot;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Home Menu mounts the ngword archive here, then reads version.dat. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000A0000.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] various system-modules here(from a separate thread?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the following NAND shared extdata archives here: 0xf0000001, 0xf0000002, 0xf0000009, 0xf000000b, 0xf000000c, 0xf000000d, and 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000b&lt;br /&gt;
| &amp;quot;/ubll.lst&amp;quot;&lt;br /&gt;
| 0x2ee0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_DB.dat&amp;quot;&lt;br /&gt;
| 0xe4c0&lt;br /&gt;
| Home Menu only does one read with size 0xe4c0 for this, even though the value it loads from [[FSFile:GetSize]] is larger than that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_OldDB.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu just closes this file immediately after opening it, when opening it was successful at least.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the [[Config_Savegame|cfg]] data for blkID 0x000C0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| [[Extdata|&amp;quot;/gamecoin.dat&amp;quot;]]&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use [[FS:CreateFile]] with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM:GetTotalStepCount]], then uses [[FSFile:GetSize]]. Then the service handle for [[NDM_Services|&amp;quot;ndm:u&amp;quot;]] is initialized with srv_GetServiceHandle(done from a separate thread perhaps?). Then Home Menu writes to the already opened gamecoin.dat file.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:CardSlotIsInserted]] and [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[BOSS_Services|&amp;quot;boss:P&amp;quot;]] service handle initialization with srv_GetServiceHandle is done here. Then [[Services|srv_Subscribe]] is used with various noticationIDs. Home Menu then uses [[FS:IsSdmcDetected]] and [[FS:IsSdmcWritable]]. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000D0000. Home Menu uses boss:P command 0x4010082, then uses srv_GetServiceHandle for initializing service handles with the following services: [[News_Services|&amp;quot;news:s&amp;quot;]] and &amp;quot;cecd:s&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for service [[Friend_Services|&amp;quot;frd:a&amp;quot;]], then various service commands are used for that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000c&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu first attempts to use [[FS:CreateFile]] with &amp;quot;/bashotorya.dat&amp;quot;, which normally fails since that file already exists. Home Menu then repeats this with &amp;quot;/bashotorya2.dat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here, Home Menu opens the following SD extdata archives: Home Menu badge SD extdata, Home Menu SD extdata, and the theme-cache SD extdata.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/SaveData.dat&amp;quot;&lt;br /&gt;
| 0x2da0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/Cache.dat&amp;quot;&lt;br /&gt;
| 0x1688&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/CacheD.dat&amp;quot;&lt;br /&gt;
| 0x36c0&lt;br /&gt;
| This is used to read the cached icon data for the currently inserted gamecard, if any. Prior to doing the read, Home Menu uses [[FSFile:GetSize]]. After opening the file and before [[FSFile:GetSize]] is used, Home Menu uses AM commands 0x10070102(for theme DLC) and 0x30084(gamecard &amp;quot;title-listing&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu uses the following AM commands for theme DLC here: 0x10050084 and 0x10020104.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BodyCache.bin&amp;quot;&lt;br /&gt;
| 0x150000&lt;br /&gt;
| Before opening the file, Home Menu firsts opens this archive under a new archive-handle again, then closes it. Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/ThemeManage.bin&amp;quot;&lt;br /&gt;
| 0x8&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]](the result is filesize 0x800).&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BgmCache.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| The data is read from here as needed. After opening the file, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P commands 0x00040000 and 0x04040080 are used here. Home Menu opens NAND shared-extdata 0xf000000e, then closes it when the archive was opened successfully. Then Home Menu uses boss:P command 0x04500102 with the theme extdata, with string &amp;quot;thmtop&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x04040080 is used, with the input programID set to the gamecard one. Then boss:P commands 0x000E0000 and 0x00160082 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=SD and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00160082 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTM:GetStepHistory]] is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for [[AC_Services|&amp;quot;ac:u&amp;quot;]], then [[AC_Services|ACU:SetClientVersion]] is used. [[Services|srv_Subscribe]] is used, then ACU command 0x002F0004 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=NAND and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/gamecoin.dat&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use FS:CreateFile with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM_Services|PTM:GetTotalStepCount]], then uses FSFile:GetSize. Then Home Menu writes to the already opened gamecoin.dat file. &lt;br /&gt;
&lt;br /&gt;
At the same time as doing the above, Home Menu also uses(probably from a different thread) [[AMNet:GetTitleIDList3|AM:GetTitleIDList3]] with mediatype=NAND and maxTIDs=0x2000. Then Home Menu uses [[AMNet:ListTitles|AM:ListTitles]] with the NAND promotional-video titleID. Then Home Menu attempts to open the ExeFS:/icon in the NAND promotional-video title.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Prior to doing the write, Home Menu uses [[FSFile:GetSize]]. Home Menu writes 0x2490-bytes to the file here. From a separate thread(?) at the same time, Home Menu also uses [[AM:ReloadDBS]] and AM command 0x00130040 with input=0x1.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the u8 value from [[Config_Savegame|cfg]] blkID 0x000E0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AM:ReloadDBS]], AM command 0x10070102(for theme DLC), AM command 0x00130040, and AM command 0x10050084(for theme DLC) are used here.&lt;br /&gt;
At the same time(from a different thread?), the &amp;quot;act:u&amp;quot; service handle is initialized with srv_GetServiceHandle. Then ACTU commands 0x00010084 and 0x000600C2 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| The [[NIM_Services|&amp;quot;nim:u&amp;quot;]] service handle is initialized with srv_GetServiceHandle. Then NIMU commands 0x000F0042, 0x00170042, 0x00150000, and 0x00050000 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AM command 0x10020104(theme DLC) is used here. Then Home Menu CXI RomFS data is read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu CXI RomFS data is read. [[Filesystem_services|FS:GetSpecialContentIndex]] for the gamecard is used, then MICU initialization is done here(separate thread maybe?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[ACU:GetWifiStatus]] is used, the NAND shared-extdata 0xf000000b archive is then opened here.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idb.dat&amp;quot;&lt;br /&gt;
| 0x2008&lt;br /&gt;
| This first opens the file for writing, then uses [[FSFile:GetSize]](output filesize is 0x6d4000). Then it writes to the file using size 0, then closes the file. Then [[PTM_Services|PTM:GetStepHistory]] is used. Then Home Menu opens &amp;quot;/idbt.dat&amp;quot;, then reads 0x2008-bytes.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts using [[News_Services|&amp;quot;news:s&amp;quot;]] commands here. While Home Menu is doing this, it also uses(from another thread?) [[NS_and_APT_Services|APT:PrepareToStartNewestHomeMenu]], [[NIM_Services|NIMU:GetState]], and [[NDM_Services|NDMU:OverrideDefaultDaemons]] with input value 0xF.&lt;br /&gt;
Later with that news-command code still running, Home Menu also uses the following commands: [[ACU:GetWifiStatus]], [[NDM_Services|NDMU:QueryExclusiveMode]], and CECDS command 0x000E0000. Then [[Config_Savegame|cfg]] blkID 0x000D0000 is loaded.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idbt.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu writes 0x2008-bytes to this file.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000e&lt;br /&gt;
| &amp;quot;/versionList.dat&amp;quot;&lt;br /&gt;
| Loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00200082 is used with string &amp;quot;mmVerDl&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| When Home Menu is terminating(?), Home Menu writes 0x2490-bytes to the file here. After doing this, Home Menu opens, writes, and closes the file again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hardware reboot ===&lt;br /&gt;
During Home Menu start-up it uses [[APT:PrepareToStartNewestHomeMenu]]. If that doesn&#039;t return an error(normally NS returns 0xC8A0CFFC for that), Home Menu starts a hardware reboot with [[APT:StartNewestHomeMenu]] etc.&lt;br /&gt;
&lt;br /&gt;
On retail this essentially means a hardware-reboot will automatically trigger if [[Configuration_Memory|configmem]] SYSCOREVER doesn&#039;t match FIRM_SYSCOREVER, or when the current APPMEMTYPE doesn&#039;t match the default APPMEMTYPE for this Old3DS/New3ds model. The latter can happen with running New3DS NATIVE_FIRM with Old3DS system-titles, for example.&lt;br /&gt;
&lt;br /&gt;
== Returning to Home Menu from a crashed application ==&lt;br /&gt;
When returning to Home Menu from an application that didn&#039;t properly shutdown(like with an exception), PTM module writes data to the PTM system savedata. Then the system terminates Home Menu, and starts Home Menu again.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* http://www.nintendo.com/consumer/systems/3ds/en_na/menu_update.jsp&lt;br /&gt;
* http://www.nintendo.co.jp/netinfo/3ds/JPN/ja.html&lt;br /&gt;
* https://yls8.mtheall.com/ninupdates/reports.php&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20754</id>
		<title>Home Menu</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20754"/>
		<updated>2018-07-24T09:01:22Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Home Menu NAND savedata */ add Launcher.dat format more in-depth&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Home Menu&#039;&#039;&#039; is the heart of the Nintendo 3DS. From there one can start games, applications, and access various processes including the friends list. It is launched by [[NS]], and is always running in the background in 3DS-mode except when other programID-high 00040030 applications like Internet Browser, Friend-List, etc are running. Home Menu is still running while [[System Settings]] is running, however the System Settings application does not allow directly returning to home-menu. The system will normally re-launch Home Menu when the Home Menu process crashes/terminates. When this re-launch occurs while Home Menu is active, Home Menu displays an error message which says to manually reboot the system.&lt;br /&gt;
&lt;br /&gt;
== System Versions ==&lt;br /&gt;
Nintendo devised a system, whereby updates would be delivered via two channels: &lt;br /&gt;
*Card Updates (CUP) - The Nintendo 3DS is updated with data from an [[System Update CFA|update partition]] on retail gamecard title. &lt;br /&gt;
*Network Updates (NUP) - The Nintendo 3DS is updated by downloading data from Nintendo&#039;s [[Title list|CDN]].&lt;br /&gt;
&lt;br /&gt;
CUPs will only deliver updates to core features, such as the Home Menu, [[Download Play]] etc. CUPs will not deliver updates to Network features, such as [[System Transfer]], [[Internet Browser]], [[StreetPass Mii Plaza]] or [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
NUPs can deliver updates to core features as well as (updated) Network Features.&lt;br /&gt;
&lt;br /&gt;
As a result of deciding to make a distinction between what content could be updated and how, Nintendo split the system version displayed by [[System Settings]] into two parts: [[CVer]] (Console Version) and [[NVer]] (Network Update Version). Represented as: &lt;br /&gt;
 &amp;lt;CVer Major&amp;gt;.&amp;lt;CVer Minor&amp;gt;.&amp;lt;CVer Micro&amp;gt;-&amp;lt;NUP Version&amp;gt;&amp;lt;NUP Region&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Console Version represents the version of the collectively installed core features. And the NUP Version represents the version of the collectively installed network features.&lt;br /&gt;
&lt;br /&gt;
So if a 3DS&#039; System Firmware read &#039;&#039;&#039;2.1.0-2U&#039;&#039;&#039;, it would indicate a console version of &#039;&#039;&#039;2.1.0&#039;&#039;&#039; and a NUP version of &#039;&#039;&#039;2U&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* CUPs can only update core content, so [[NVer]] is never updated with CUPs.&lt;br /&gt;
* NUPs will not update [[NVer]] if network features are not updated. (Best seen with the USA vs JPN/EUR 6.0.0 NUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CUPs are implemented by adding a [[System Update CFA]] to retail NCSD gamecard images. Nintendo generally creates CUPs after NUPs are released.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When updating the system from 4.5.0-6 to 4.5.0-10, the following titles are updated(in the order of title download+install): [[Health and Safety Information]], [[Nintendo 3DS Camera]], [[eShop]], [[System Transfer]], [[Internet Browser]], [[Title_list|0004009B00014102]], [[Title_list|0004009B00014202]], [[Title_list|0004009B00014302]], [[NVer]], and [[FIRM|AGB_FIRM]].&lt;br /&gt;
&lt;br /&gt;
=== System Versions List ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! System version &lt;br /&gt;
! Home Menu title version&lt;br /&gt;
! Release date &lt;br /&gt;
! Changelog &lt;br /&gt;
! System security [[3DS_System_Flaws|flaws]] fixed*&lt;br /&gt;
! Userland security [[3DS_Userland_Flaws|flaws]] fixed*&lt;br /&gt;
! 3DS-mode homebrew affected*&lt;br /&gt;
! CUP Released&lt;br /&gt;
! CDN Availability&lt;br /&gt;
! CDN Post Date&lt;br /&gt;
|-&lt;br /&gt;
| [[1.0.0-0|1.0.0-0]]&lt;br /&gt;
| 0&lt;br /&gt;
| February 26, 2011&lt;br /&gt;
| Shipped with 3DS on launch&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| February 18, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[1.1.0-1|1.1.0-1]] &lt;br /&gt;
| 0 &lt;br /&gt;
| February ?, 2011&lt;br /&gt;
| General bug fixes&lt;br /&gt;
Added 3D Video title to menu. (&amp;quot;For a Limited Time Only&amp;quot;)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| March 1, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.0.0-2|2.0.0-2]]&lt;br /&gt;
| 1029&lt;br /&gt;
| June 6/7, 2011&lt;br /&gt;
| [[eShop]] added, web browser available, [[System Transfer]] added. Full DSiWare data management available. [[Automatic_System_Update_Download|Automatic]] downloading for system updates added. Video stubbed.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 6, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-3|2.1.0-3]]&lt;br /&gt;
| 2049&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
| Fixes the Ridge Racer freeze.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-4|2.1.0-4]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
| System stability improvements and other adjustments.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.2.0-X|2.2.0]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 6, 2011&lt;br /&gt;
| CUP Only Release. Add &amp;quot;join game&amp;quot; feature to [[Friend List]]. Update from some game cards such as Super Mario 3D Land.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Unavailable&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-5|3.0.0-5]]&lt;br /&gt;
| 4111&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
| Added 3D video recording to the camera title, updated Mii Streetpass Plaza, [[System Transfer]] between 3DS systems available, improved eShop, home menu QR code scanning with QR codes containing URLs. [[Nintendo Zone]] is now always accessible, 3D video streaming support was added to NZone. This added support for running GBA VC titles via AGB_FIRM as well, support for GBA VC titles was also added to NATIVE_FIRM.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-6|3.0.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
| Only StreetPass Mii Plaza and the [[NVer]] title were updated. From Nintendo&#039;s release notes: &amp;quot;System stability improvements and other adjustments&amp;quot;.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.1.0-6|3.1.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown. Sighted preinstalled on some early European 3DS XLs.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [[4.0.0-7|4.0.0-7]]&lt;br /&gt;
| 5131&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
| Add folders to Home Menu, game patching added, buy more expensive games than 1000 yen in JPN. System titles for CHN, TWN, and KOR became available.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.1.0-8|4.1.0-8]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
| From changelog: &amp;quot;improvements to overall system stability and other minor adjustments&amp;quot;. Once updated to [[4.1.0-8]], the parental-controls PIN is no longer required for future system updates.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.2.0-9|4.2.0-9]]&lt;br /&gt;
| 6146&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
| Improved eShop safety for entering credit-card info, and behind the scenes improvements. Stored CC info will be deleted by this updated eShop, and can be re-entered again.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.3.0-10|4.3.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
| Updated eShop, bad word list and NZone hotspot list updated.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
| NZone hotspot list updated and TWL_FIRM updated for blocking flash cards.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10C]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
| China-only, the *only* updated title was [[System Settings]]. This title was updated to a version already available in TWN/KOR.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Available&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.5.0-10|4.5.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
| Flash-card block via updated TWL_FIRM and whitelist. NZone hotspot list updated as well.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[5.0.0-11|5.0.0-11]]&lt;br /&gt;
| 7172&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
| Many system titles including NATIVE_FIRM were updated, multiple vulnerabilities were fixed as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[5.1.0-11|5.1.0-11]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
| NATIVE_FIRM and NS were updated. According to the official change-log: &amp;quot;Resolves an issue that may prevent access to the System Settings or other features.&amp;quot;&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.0.0-11|6.0.0-12 (-11U)]]&lt;br /&gt;
| 8198&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Users can now back up save data for downloadable versions of Nintendo 3DS software and most Virtual Console games&amp;quot;. For EUR/JPN, the [[StreetPass Mii Plaza]] application and the [[Nintendo 3DS Camera]] application were updated. Other titles for all regions were updated as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-11|6.1.0-12 (-11U)]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-12U]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
| This USA-only update added the updated network features applications which were first released in JPN/EUR with the [[6.0.0-11|6.0.0-12 NUP]] update.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.2.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
| This update added support for the StreetPass relay feature, updated TWL_FIRM, and updated the Nintendo Zone hotspots list.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.3.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
| See [[6.3.0-12|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.4.0-12]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
| See [[6.4.0-12|this]](Only for the KOR and TWN regions).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 9230&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
| See [[7.0.0-13|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-14]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
| See [[7.1.0-14|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-15]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
| See [[7.1.0-15|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-16]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
| See [[7.1.0-16|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.2.0-17]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
| See [[7.2.0-17|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
| See [[8.0.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
| See [[8.1.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-19]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
| See [[8.1.0-19|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-0 New3DS]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
| See [[8.1.0-0 New3DS|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| 8.1.0-19&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
| Japan-only &amp;quot;update&amp;quot;, see [http://yls8.mtheall.com/ninupdates/reports.php?date=10-02-14_02-05-03&amp;amp;sys=ctr here]. The only change was that a new title([[New_3DS]]-only system application) was added, CVer/NVer titles were not even updated. The initial version of this [[Title_list|title]] is a stub.&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| v11272&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
| See [[9.0.0-20|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (K)&lt;br /&gt;
| Available&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.1.0-20J]]&lt;br /&gt;
| v14336(JPN-region title)&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
| Japan-only, see [[9.1.0-20J|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.2.0-20]]&lt;br /&gt;
| &lt;br /&gt;
| October 29, 2014&lt;br /&gt;
| See [[9.2.0-20|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 29, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 8, 2014&lt;br /&gt;
| See [[9.3.0-21|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 8, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.4.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 11, 2014&lt;br /&gt;
| See [[9.4.0-21|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 11, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| &lt;br /&gt;
| February 2, 2015&lt;br /&gt;
| See [[9.5.0-22|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| February 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-23]]&lt;br /&gt;
| &lt;br /&gt;
| March 2, 2015&lt;br /&gt;
| See [[9.5.0-23|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| As above&lt;br /&gt;
| Available&lt;br /&gt;
| March 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
| &lt;br /&gt;
| March 23, 2015&lt;br /&gt;
| See [[9.6.0-24|this]].&lt;br /&gt;
| See [[9.6.0-24|here]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 23, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.7.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| April 20, 2015&lt;br /&gt;
| See [[9.7.0-25|this]].&lt;br /&gt;
| Probably none?&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| April 20, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.8.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| June 1, 2015&lt;br /&gt;
| See [[9.8.0-25|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| June 1, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| &lt;br /&gt;
| July 13, 2015&lt;br /&gt;
| See [[9.9.0-26|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| July 13, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.0.0-27|10.0.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 8, 2015&lt;br /&gt;
| See [[10.0.0-27|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 8, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.1.0-27|10.1.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 14, 2015&lt;br /&gt;
| See [[10.1.0-27|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| September 14, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.2.0-28|10.2.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| October 19, 2015&lt;br /&gt;
| See [[10.2.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 19, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.3.0-28|10.3.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| November 9, 2015&lt;br /&gt;
| See [[10.3.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| November 9, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.4.0-29|10.4.0-29]]&lt;br /&gt;
| &lt;br /&gt;
| January 18, 2016&lt;br /&gt;
| See [[10.4.0-29|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Launching old Ironfall was blocked.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 18, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.5.0-30|10.5.0-30]]&lt;br /&gt;
| &lt;br /&gt;
| January 25, 2016&lt;br /&gt;
| See [[10.5.0-30|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| January 25, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.6.0-31|10.6.0-31]]&lt;br /&gt;
| &lt;br /&gt;
| February 22, 2016&lt;br /&gt;
| See [[10.6.0-31|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U)&lt;br /&gt;
| Available&lt;br /&gt;
| February 22, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| March 14, 2016&lt;br /&gt;
| See [[10.7.0-32|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 14, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.0.0-33|11.0.0-33]]&lt;br /&gt;
| &lt;br /&gt;
| May 9, 2016&lt;br /&gt;
| See [[11.0.0-33|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| May 9, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.1.0-34|11.1.0-34]]&lt;br /&gt;
| &lt;br /&gt;
| September 13, 2016&lt;br /&gt;
| See [[11.1.0-34|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.2.0-35|11.2.0-35]]&lt;br /&gt;
| &lt;br /&gt;
| October 24, 2016&lt;br /&gt;
| See [[11.2.0-35|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 24, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.3.0-36|11.3.0-36]]&lt;br /&gt;
| &lt;br /&gt;
| February 6, 2017&lt;br /&gt;
| See [[11.3.0-36|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 6, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.4.0-37|11.4.0-37]]&lt;br /&gt;
| &lt;br /&gt;
| April 10, 2017&lt;br /&gt;
| See [[11.4.0-37|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| April 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.5.0-38|11.5.0-38]]&lt;br /&gt;
| &lt;br /&gt;
| July 10, 2017&lt;br /&gt;
| See [[11.5.0-38|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.6.0-39|11.6.0-39]]&lt;br /&gt;
| &lt;br /&gt;
| September 18, 2017&lt;br /&gt;
| See [[11.6.0-39|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 18, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.7.0-40|11.7.0-40]]&lt;br /&gt;
| &lt;br /&gt;
| June 18, 2018&lt;br /&gt;
| See [[11.7.0-40|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 18, 2018&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot;: This includes known flaws, and any fixed flaws discovered via code bin-diff.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot; and &amp;quot;3DS-mode homebrew affected&amp;quot; only apply to the changes done with that specific system-update(&amp;quot;affected&amp;quot; does not include hax codebases breaking *just* due to updated codebins).&lt;br /&gt;
&lt;br /&gt;
[[Category:Nintendo Software]]&lt;br /&gt;
&lt;br /&gt;
== Auto-Boot Function ==&lt;br /&gt;
When the Home Menu is initially loaded by [[NS]], it checks the gamecard ExeFS:/[[SMDH|icon]] for the auto-boot flag. If the auto-boot flag is set, it will load the application on the cartridge and the home menu will not remain running in the background, or at least not in an operational state. Using software cues to return to the home menu, or sleep menu while in this state, causes a shutdown.&lt;br /&gt;
&lt;br /&gt;
Notable features of demo titles:&lt;br /&gt;
*Auto-boot demos generally disable the functionality of the home button.&lt;br /&gt;
*The &#039;&#039;New Super Mario Bros 2&#039;&#039; demo, retained the functionality of the home button, and had an timer which triggered the demo to quit after a period of inactivity.&lt;br /&gt;
&lt;br /&gt;
Auto-boot cartridges, can bypass some of the functions of the Home Menu. Auto Booted software:&lt;br /&gt;
* Doesn&#039;t show usage history in the [[Activity Log]]&lt;br /&gt;
* Bypasses Parental controls&lt;br /&gt;
* Bypasses Forced Game Card Updates&lt;br /&gt;
* Bypasses Initial 3DS Setup&lt;br /&gt;
* The console does not have a friends list presence.&lt;br /&gt;
* Is still subject to region lock(see below).&lt;br /&gt;
&lt;br /&gt;
Region lock is still active, so the home menu will refuse to launch demos with incorrect region lock will not load, displaying &amp;quot;An Error has Occurred&amp;quot;. However, game card update partition checks are not done, which allows launching demos that have region free encoding, but have an alternate(or even invalid) region update partition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following auto-boot paths can be used by Home Menu, checked in the same order listed below(the above gamecard auto-boot is checked before this):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and X&lt;br /&gt;
| This launches [[System Settings]] for touchscreen calibration.&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and Y&lt;br /&gt;
| This launches [[System Settings]] for circlepad calibration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is only checked when the low u16 from [[Config_Savegame|config]] block 0x00110000 is value zero(normally this is non-zero). Thus, the below is only handled when a system setup is required.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, X, Y, A, and B, a 3DS gamecard must be inserted as well.&lt;br /&gt;
| This launches the gamecard application. Note that pressing the HOME button in the gamecard application launched this way will only result in the system shutting down.&lt;br /&gt;
|-&lt;br /&gt;
| This is used when the above path isn&#039;t used.&lt;br /&gt;
| This launches System Settings for the system setup.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Region Lockout ==&lt;br /&gt;
&lt;br /&gt;
One of the Home Menu&#039;s functions, is to regulate region lockout. The region lockout data for any given title is held in the [[SMDH#BNR Region|ICN data]]. There are 6 regions of which have their own region lockout, Japan, USA, Europe(including Nintendo Australia), China, Taiwan and Korea. There is also a value which makes a title exempt from region lockout, and consequently accessible from any region of 3DS.&lt;br /&gt;
&lt;br /&gt;
The region-field stored in the [[SMDH|ICN-data]] is only checked when Home Menu itself launches a title, not when other titles use NS to have Home Menu launch titles. This isn&#039;t actually useful for gamecard region-free however, due to the gamecard system-updates, see below.&lt;br /&gt;
&lt;br /&gt;
Also note that while some gamecard games are mostly region-free(main CXI is identical for all regions of the gamecard), those gamecards can&#039;t actually be launched with all 3DS regions due to the gamecard system-update, see below. Note that the main CXI being identical for all regions of a gamecard also means the savedata keyY is identical for all regions of that gamecard too(except for old system-version &amp;lt;v2.2 games, in some cases, due to different cardIDs).&lt;br /&gt;
&lt;br /&gt;
=== Effects of Region Lockout  ===&lt;br /&gt;
Every 3DS title regardless of location (NAND/SD Card/Game Card) is subject to region lockout scrutiny by the Home Menu. And the home menu treats &#039;out-of-region&#039; titles by simply refusing to show them on the home menu. No messages are shown on the home menu to notify the user, the title is simply ignored. However out-of-region SD Card titles, will appear and quickly disappear, while all the SD Titles are being processed. In cases where access to the home menu GUI is not needed to launch the title (like in the case of kiosk demos), the home menu states an error has occurred, and launching of the title is stopped.&lt;br /&gt;
&lt;br /&gt;
=== Game Card Updates ===&lt;br /&gt;
Either intentionally a region lock mechanism or not, the function which checks the game card update partition returns an error when it is detected the update is for a region other than the 3DS&#039;s region (Most likely triggered by the absence of the correct CVer title). And errors returned from checking the update partition, will result in the home menu displaying &amp;quot;This Game Card cannnot be used&amp;quot;, when the user attempts to launch the title.&lt;br /&gt;
&lt;br /&gt;
== Home-menu [[SpotPass]] usage ==&lt;br /&gt;
&lt;br /&gt;
Home-menu originally used two domains with HTTPS for SpotPass. SpotPass stores this content in Home-menu&#039;s NAND shared extdata.&lt;br /&gt;
&lt;br /&gt;
* The system notifications are downloaded from: &amp;lt;nowiki&amp;gt;https://a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;/&amp;lt;langcode&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; Where langcode is the two-character language codes from [[Config Savegame#Languages|config]], and regionID is from the below table. &amp;lt;filename&amp;gt; is bashoX/sysmsgX where X is 0-3.&lt;br /&gt;
* https://pls.c.shop.nintendowifi.net/pl/upload This URL is used for uploading data from the home menu NAND shared extdata, it&#039;s unknown what this is used for. This data is uploaded every 24 hours.&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;https://npul.c.app.nintendowifi.net/p01/recv/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; This is used for uploading unknown data from extdata. &amp;lt;filename&amp;gt; can be one of the following:&lt;br /&gt;
** &amp;quot;phu&amp;quot;&lt;br /&gt;
** &amp;quot;tiu&amp;quot; The POST data contains a list of [[BOSS_Services|BOSS]] taskIDs etc. This seems to be only for Nintendo titles?(system+eShop apps)&lt;br /&gt;
** &amp;quot;splu&amp;quot;&lt;br /&gt;
** &amp;quot;sendmgn&amp;quot; For this it appears SpotPass does a HTTP POST with data originally from Launcher.dat?&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Region&lt;br /&gt;
! ID&lt;br /&gt;
|-&lt;br /&gt;
| JPN&lt;br /&gt;
| gWr4JXxb2mKTG3lq&lt;br /&gt;
|-&lt;br /&gt;
| NA&lt;br /&gt;
| uuI82221UKkqmtbp&lt;br /&gt;
|-&lt;br /&gt;
| EUR / Others&lt;br /&gt;
| UrXSeurnxhPrq7AS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SpotPass content payload for notifications begin with a header, followed by an [[SMDH|icon]] and the UTF-16 text, and various metadata.&lt;br /&gt;
&lt;br /&gt;
=== VersionList ===&lt;br /&gt;
During startup, Home Menu loads &amp;quot;/versionList.dat&amp;quot; from NAND extdata 0xf000000e. This is downloaded via SpotPass, the file-data downloaded via HTTPS here is raw (no SpotPass container):&lt;br /&gt;
* Retail: [https://tagaya-ctr.cdn.nintendo.net/tagaya/versionlist]&lt;br /&gt;
* Dev-unit: [https://tagaya-dev-ctr.cdn.nintendo.net/tagaya/versionlist] The titles listed in this are not available on the [[Title list|normal]] CDN.&lt;br /&gt;
&lt;br /&gt;
This is a list of title-updates available on the eShop, for regular app titles and update-titles. This is what Home Menu checks to determine whether the currently selected application needs to be updated or not. When an Internet connection is not available or wifi is disabled, Home Menu will skip VersionList handling/messages when you launch applications.&lt;br /&gt;
&lt;br /&gt;
File structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| The first u32 is normally 0x1, the rest is normally all-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| &amp;lt;Filesize-0x10&amp;gt;&lt;br /&gt;
| Title entries, 0x10-bytes each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Title entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 TitleID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 titleversion&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown u32, usually zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[BOSS_Services|BOSS]] usage notes ===&lt;br /&gt;
Home Menu uses 4 hard-coded NsDataIds: 0x1, 0x2, 0x3, and 0x4, under a loop in the same function for writing to &amp;quot;bashotorya.dat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Automatic System Update Download ==&lt;br /&gt;
See [[Automatic System Update Download]].&lt;br /&gt;
&lt;br /&gt;
== Home Menu Error Messages ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dialog Text&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;An error has occured. Please save your data ... then restart the system&amp;quot;&lt;br /&gt;
| This dialog is displayed when a system applet(including Home Menu) crashes/terminates. This dialog is also displayed for system errors as well.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Home Menu Themes ==&lt;br /&gt;
See [[Home_Menu/Themes|here]].&lt;br /&gt;
&lt;br /&gt;
As of [[11.0.0-33]] Home Menu themes are only supported with USA, EUR, and JPN. CHN Home Menu was last updated with v7.0, and TWN doesn&#039;t even have a Home Menu settings menu(just the old screen brightness config menu + an [[amiibo Settings]] icon on the right side of the browser icon).&lt;br /&gt;
&lt;br /&gt;
KOR Home Menu doesn&#039;t have the theme-settings menu button. While this does have the theme handling code, it isn&#039;t actually usable since extdataID 0x0 is used for theme-extdata for non-&amp;lt;JPN/USA/EUR&amp;gt; regions(which is invalid).&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[System_SaveData|NAND]] savedata ==&lt;br /&gt;
=== Launcher.dat ===&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;
| Launcher.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, cart launcher position on the home menu&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of NAND titleIDs. For an unused entry, the u64 value is ~0(in that case, the corresponding entries at 0xD9A/0x106A for this titleID are not used either). This is used for the icons displayed on the main Home Menu screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB51&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8, numbers of rows on the home menu, minus 1 (range 0..5) (with the enlarge/reduce option)&lt;br /&gt;
|-&lt;br /&gt;
| 0xB5C&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, position of the cursor on the home menu&lt;br /&gt;
|-&lt;br /&gt;
| 0xB5E&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, horizontal scrolling level (divided by the number of rows to get the actual number of columns hidden) on the home menu&lt;br /&gt;
|-&lt;br /&gt;
| 0xD80&lt;br /&gt;
| 0x2 or 0x4&lt;br /&gt;
| u16 or u32, number the next created folder will have (starts at 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9A&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| Array of 360 s16 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position, 0x0 for the very first icon, 0x1 for the next one and so on. This is completely linear, no X/Y coordinates. Implemented with the format-version for [[4.0.0-7|4.0.0-X]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x106A&lt;br /&gt;
| 0x168&lt;br /&gt;
| Array of 360 s8 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position. When an s8 here is -1(which is the normal value), the icon is located with the first chunk of icons(outbuf+0), otherwise the base address is outbuf+0xB40+&amp;lt;s8val*0x1E0&amp;gt;(which is equivalent to 60 icons * s8val). Implemented with the format-version for [[4.0.0-7|4.0.0-X]]. Corresponds to the id of the folder the icon is in, range -1..59, with -1 meaning not in a folder&lt;br /&gt;
|-&lt;br /&gt;
| 0x11DC&lt;br /&gt;
| 0x78&lt;br /&gt;
| Array of 60 s16 fields, corresponding to folders position (with -1 meaning the folder is deleted/not yet created)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1434&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Array of 60 u8 fields, the number of rows in each corresponding folder (defaults to 2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1470&lt;br /&gt;
| 0x78&lt;br /&gt;
| Array of 60 u16 fields, the position of the cursor in each corresponding folder (defaults to 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14E8&lt;br /&gt;
| 0x78&lt;br /&gt;
| Array of 60 u16 fields, the horizontal scroll level in each corresponding folder (divided by the number of rows to get the actual number of columns hidden) (defaults to 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1560&lt;br /&gt;
| 0x7F8&lt;br /&gt;
| Array of 60 utf-16 strings of length 0x22 (in bytes, so only 0x11 utf-16 characters) (not NULL-terminated), the name of each corresponding folder&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D58&lt;br /&gt;
| 0xF0&lt;br /&gt;
| Array of 60 u32, the number of each corresponding folder&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SD ExtData ==&lt;br /&gt;
The SD ExtData [[Extdata#Filesystem|File System]] for Home Menu introduced with [[2.0.0-2|2.0.0-X]] is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── SaveData.dat&lt;br /&gt;
     ├── Cache.dat&lt;br /&gt;
     └── CacheD.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
|  icon&lt;br /&gt;
|  Stubbed. Always image 00000002.&lt;br /&gt;
|  0x4 Bytes&lt;br /&gt;
|  n/a&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  SaveData.dat&lt;br /&gt;
|  Always image 00000003.&lt;br /&gt;
|  0x2cb0 Bytes (0x2da0 starting with [[4.0.0-7]])&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/SaveData.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  Cache.dat&lt;br /&gt;
|  Indexes and records details for the cached icon data. Always image 00000004.&lt;br /&gt;
|  0x1688 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/Cache.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  CacheD.dat&lt;br /&gt;
|  Cached icon data for Home Menu. Always image 00000005.&lt;br /&gt;
|  0x4cfe00 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/CacheD.dat Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cache.dat &amp;amp; CacheD.dat ===&lt;br /&gt;
These two files work in tandem to allow the home menu to cache icon data for applications which are presented on the Home Menu. The size of both files suggests a maximum cache size of 360 icons. Cache.dat stores details about the cache icon data, and CacheD.dat stores the icon data. The icon cache stores icon data for *all* applications shown on the Home Menu, this includes DSi NAND Titles, and DS(i) cartridges. The format of cached DS(i) icon data is not understood, but they are the same size as 3DS icon data (0x36c0).&lt;br /&gt;
&lt;br /&gt;
In Cache.dat the first 8 bytes are a header where the first byte is the format-version, then follows each icon slots&#039;s entry in the format:&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;
|  8&lt;br /&gt;
|  Title ID in Little Endian&lt;br /&gt;
|-&lt;br /&gt;
|  0x8&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|-&lt;br /&gt;
|  0xc&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All unused entries have the Title IDs filled with &amp;quot;0xff&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In CacheD.dat, the icon data is concatenated together, with the first icon at offset 0x0.&lt;br /&gt;
&lt;br /&gt;
=== SaveData.dat ===&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;
| SaveData.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of titleIDs(used with icons). Equivalent to the same array in Launcher.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB48&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 bool array with 360 entries. Some SD-only icon array. Probably an array for each icon present status? Each entry is only known to be set to 0x00 or 0x01, with the former being the default.&lt;br /&gt;
|-&lt;br /&gt;
| 0xCB0&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| s16 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF80&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13b8&lt;br /&gt;
| 0x8&lt;br /&gt;
| Theme entry structure for the regular theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13c0&lt;br /&gt;
| 0x8*10(0x50)&lt;br /&gt;
| Array of theme entry structures for theme [[9.3.0-21|shuffling]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x141b&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = one regular theme, 1 = multiple themes for theme [[9.3.0-21|shuffle]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The icon arrays above are handled exactly the same way as Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
When the theme cache is enabled via the above fields, Home Menu loads the cache at startup(if the used theme structure is valid).&lt;br /&gt;
&lt;br /&gt;
Theme entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Theme index: for DLC this is the content-index, for built-in themes this is an index for an array selecting the built-in theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero. This is the low 8-bits in the DLC titleID that this theme was originally loaded from.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| Theme type, the valid range is 0..5. 0 = none, 1 = built-in theme from Home Menu RomFS, 2 = theme data loaded from SD cache / content archive. 3 = ?, 4 = ?, 5 = ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When the theme-type is value1 the themeindex must be &amp;lt;9. When the theme-type is value2 the themeindex has to be non-zero, and the u8 at offset 0x4 must not be &amp;gt;=10.&lt;br /&gt;
&lt;br /&gt;
The theme-loader code (besides the AM &amp;lt;is-current-themeindex-DLC-installed&amp;gt; code) handles all theme-types &amp;gt;=2 the same way. However, it seems all DLC AM code involving checking the currently-used theme DLC only gets executed when the theme-type is value2. The code in the theme-loader for that also checks that a certain Home Menu state flag is non-zero, before running the AM DLC code(it&#039;s unknown where this flag value comes from).&lt;br /&gt;
&lt;br /&gt;
==== SaveData.dat format versions ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Version value&lt;br /&gt;
!  Filesize&lt;br /&gt;
!  Implemented with Home Menu system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0x2CB0&lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.0.0-20|9.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 (Latest version as of v10.6-v11.0 Home Menu)&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Home Menu code for writing the updated SaveData.dat to FS is broken when the filesize is smaller than expected due to being from an older format-version originally. When writing to the file, Home Menu checks the filesize then attempts to use [[FSFile:SetSize]] on mismatch, but [[FSFile:SetSize]] can&#039;t be used with extdata(error from [[FSFile:SetSize]] appears to be ignored). When writing to SaveData.dat the write-size is the one for the current format-version, but since extdata files are fixed-size this will only result in the first {original filesize} bytes being written(result-code = 0xE0E046C1).&lt;br /&gt;
&lt;br /&gt;
Basically, unless the extdata is deleted from the SD card FS manually, the SaveData.dat filesize will never be successfully updated from an old filesize to the current-format filesize by Home Menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[Home_Menu/Themes|Theme]] SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── ThemeManage.bin&lt;br /&gt;
     ├── BodyCache.bin&lt;br /&gt;
     ├── BgmCache.bin&lt;br /&gt;
     └── nsalist&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| ThemeManage.bin&lt;br /&gt;
| Theme management info. The filesize must match 0x800, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x800&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BodyCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS body_LZ.bin file. The filesize must match 0x150000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x150000&lt;br /&gt;
| 00000004&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| BgmCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS bgm.bcstm file. The filesize must match 0x337000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x337000&lt;br /&gt;
| 00000005&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| nsalist&lt;br /&gt;
| Contains the list of DLC themes(IDs+prices), downloaded via [[SpotPass]].&lt;br /&gt;
| &lt;br /&gt;
| 00000007&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin contain cached theme data for the currently used DLC theme. ThemeManage.bin is loaded by Home Menu during startup. The cached theme data is loaded at startup when a DLC theme is selected. This also contains theme-shop [[SpotPass]] data.&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin are all-zero when no theme is selected.&lt;br /&gt;
&lt;br /&gt;
Starting with [[9.3.0-21|9.3.0-X]] Home Menu can use more files in this extdata, for theme shuffling. &amp;quot;theme:/ThemeManage.bin&amp;quot; &amp;quot;theme:/BgmCache_%02d.bin&amp;quot; &amp;quot;theme:/BodyCache_rd.bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ThemeManage.bin ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally value 0x1?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached body_LZ.bin data.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached bgm.bcstm data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| When a DLC theme is selected, this is the content-index of the DLC theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually value 0x200 when the data in theme-cache is actually used?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total filesize is 0x800-bytes, normally the data starting at offset 0x1C is all-zero.&lt;br /&gt;
&lt;br /&gt;
When no theme is actually used,  the only non-zero fields are the following: the u32 stored at offset 0x0 in ThemeManage.bin is value 0x1, with offset 0x10 u32 set to value 0x1.&lt;br /&gt;
&lt;br /&gt;
== Home Menu badge SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── BadgeData.dat&lt;br /&gt;
     └── BadgeMngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
|-&lt;br /&gt;
| BadgeData.dat&lt;br /&gt;
| [[Home_Menu#BadgeData.dat|See below.]]&lt;br /&gt;
| 0xF4DF80&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BadgeMngFile.dat&lt;br /&gt;
| [[Home_Menu#BadgeMngFile.dat|See below.]]&lt;br /&gt;
| 0xD4A8&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeData.dat ===&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;
| 100 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Set Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x35E80&lt;br /&gt;
| 1000 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x250F80&lt;br /&gt;
| 100 * 0x2000&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 Badge Set Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0x318F80&lt;br /&gt;
| 1000 * 0x2800&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 + Tiled A4 64x64 Badge Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0xCDCF80&lt;br /&gt;
| 1000 * 0xA00&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 32x32 + Tiled A4 32x32 Badge Icons&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeMngFile.dat ===&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;
| u32, Must Be Zero&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Badge Sets&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Placed Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Set in Home Menu (0xFFFFFFFF = All Badges)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Column in All Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Nintendo Network ID Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x338&lt;br /&gt;
| Unknown (always zeros? unused?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x358&lt;br /&gt;
| 0x80&lt;br /&gt;
| Used Badge Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D8&lt;br /&gt;
| 0x10&lt;br /&gt;
| Used Badge Set Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E8&lt;br /&gt;
| 1000 * 0x28&lt;br /&gt;
| [[Home_Menu#BadgeInfo|BadgeInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xA028&lt;br /&gt;
| 100 * 0x30&lt;br /&gt;
| [[Home_Menu#BadgeSetInfo|BadgeSetInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2E8&lt;br /&gt;
| 360 * 0x18&lt;br /&gt;
| [[Home_Menu#BadgeLayoutSlot|BadgeLayoutSlot]] Entries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeIdentifier ====&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;
| u32, Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Sub ID (used for multi-part badges)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetIdentifier ====&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;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x2710)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeInfo ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Number Placed&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Quantity&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (packed data?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x10&lt;br /&gt;
| u64[2], Shortcut Title ID (twice, once per u64)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetInfo ====&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;
| 0x18&lt;br /&gt;
| [[Home_Menu#BadgeSetIdentifier|BadgeSetIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Start Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeLayoutSlot ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Folder (0xF0FF = Icon of a folder, 0xFFFFFFFF = No folder)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file size must match 0xD4A8, otherwise the Home Menu code returns an error.&lt;br /&gt;
&lt;br /&gt;
== Home Menu theme layout SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     └── MngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| MngFile.dat&lt;br /&gt;
| See below.&lt;br /&gt;
| 0x004D1280&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MngFile.dat ===&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;
| u32, must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| array of 8 u8, 0 if the corresponding layout slot is not set, 1 if it is&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x3000 * 8&lt;br /&gt;
| Start of the layout entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1800C&lt;br /&gt;
| 0xC&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x18010&lt;br /&gt;
| 0x2DA0 * 8&lt;br /&gt;
| Start of the [[Home_Menu#SaveData.dat|SaveData.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2ED10&lt;br /&gt;
| 0xD4A8 * 8&lt;br /&gt;
| Start of the [[Home_Menu#BadgeMngFile.dat|BadgeMngFile.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x99250&lt;br /&gt;
| 0x30&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x99280&lt;br /&gt;
| 256*3*8 * 400/8 * 8&lt;br /&gt;
| Start of the top screen (400x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F1280&lt;br /&gt;
| 256*3*8 * 320/8 * 8&lt;br /&gt;
| Start of the bottom screen (320x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Layout entries 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;
| 0x2558&lt;br /&gt;
| Exact copy of the entire Home Menu [[System_SaveData]] [[Home_Menu#Launcher.dat|Launcher.dat]], this is the actual layout data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2558&lt;br /&gt;
| 0xAA8&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize must match 0x004D1280, otherwise the Home Menu code returns an error. The saved Home Menu layouts are stored here.&lt;br /&gt;
&lt;br /&gt;
When saving a layout, the total layout field is increased, then a new layout entry is created with the contents of the current Home Menu [[System_SaveData]](NAND savedata) Launcher.dat + a screenshot of the main Home Menu screen is written. When loading a layout, Launcher.dat in savedata is written with the current Launcher.dat data already stored in memory(unknown if any data gets changed for it here), then data from the layout entry is copied into the Home Menu [[System_SaveData]] Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
Home Menu *only* accesses this file with the Home Menu layout-settings menu / when entering that menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu startup ==&lt;br /&gt;
The following is what Home Menu does at startup(converted from cmd-logs), from [[9.4.0-21]], in the same order Home Menu does it.&lt;br /&gt;
&lt;br /&gt;
Originally Home Menu mounted sdmc in main(), starting(?) with [[6.0.0-11]] Home Menu only has sdmc mounted while handling [[SD_Savedata_Backups]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Archive&lt;br /&gt;
!  Filename&lt;br /&gt;
!  Read size&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_init(), then srv_GetServiceHandle is used to initialize the service handles for the following services: [[NS_and_APT_Services|ns:s]], [[PTM_Services|ptm:sysm]], and [[Config_Services|cfg:s]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[CfgS:SecureInfoGetByte101]] and [[CfgS:GetLocalFriendCodeSeed]] are used, the output data from these are not used. If either of these return an error, Home Menu uses [[ERR:Throw]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Cfg:GetSystemModel]] is then used to initialize a Home Menu state field.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then loads the system language via [[CfgS:GetConfigInfoBlk2]], and uses [[Cfg:SecureInfoGetRegion]], to initialize Home Menu region/language state. Home Menu then uses [[Cfg:SecureInfoGetRegion]] again, then loads the [[Config_Savegame|CountryInfo]] via [[CfgS:GetConfigInfoBlk2]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu initializes [[Filesystem_services|fs:USER]] here. Home Menu then mounts the Home Menu CXI RomFS. Then Home Menu uses [[Filesystem_services|FSUSER:GetPriority]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts APT initialization / using APT service commands here. Eventually Home Menu then [[NSS:LaunchTitle|launches]] various system-modules.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu attempts to open NAND shared-[[extdata]] 0xe0000000, which will normally fail since it doesn&#039;t exist.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[Application_Manager_Services|AM]] command 0x00130040, with input u8 = value 0x0. Home Menu continues using APT commands after this.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[HID_Services|hid:SPVR]] service initialization is done here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTMSYSM:GetShellStatus]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read to check the auto-boot flag(see the auto-boot section on this page). The system-setup-required flag is then read here if needed, as mentioned under the auto-boot section of this page.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then uses cfg commands to load system language, region, and CountryInfo.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/menu_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/hud_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[NS_and_APT_Services|APT:GetSharedFont]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/font/Hud_JP.bcfnt&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Here Home Menu loads the [[Config_Savegame|cfg]] state for blkID 0x50005.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu loads the GPU shaders from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does DSP initialization then starts using DSP commands etc + loads sound data from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does GSP initialization.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[APT:GetCaptureInfo]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]], [[PTMSYSM:GetSoftwareClosedFlag]], and [[PTMSYSM:ClearSoftwareClosedFlag]]. Home Menu then uses [[PTM_Services|PTMSYSM:GetShellStatus]] 3 times in a row. Starting from here, Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]] frequently(presumably from a separate thread).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the archive for the Home Menu [[System_SaveData]] here. Then Home Menu attempts to open &amp;quot;/Launcher.dat&amp;quot; for reading, when successful Home Menu just closes the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| 0x2490&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| System CFA, titleID for USA: 0004009B00013302&lt;br /&gt;
| &amp;quot;/country.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[NS CFA]]&lt;br /&gt;
| &amp;quot;/ctr_backup_black_list&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu first reads 0x10-bytes from offset 0x0, then after that it reads the rest of the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] the camera system-module here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| NGWord bad word list CFA&lt;br /&gt;
| &amp;quot;/version.dat&amp;quot;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Home Menu mounts the ngword archive here, then reads version.dat. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000A0000.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] various system-modules here(from a separate thread?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the following NAND shared extdata archives here: 0xf0000001, 0xf0000002, 0xf0000009, 0xf000000b, 0xf000000c, 0xf000000d, and 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000b&lt;br /&gt;
| &amp;quot;/ubll.lst&amp;quot;&lt;br /&gt;
| 0x2ee0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_DB.dat&amp;quot;&lt;br /&gt;
| 0xe4c0&lt;br /&gt;
| Home Menu only does one read with size 0xe4c0 for this, even though the value it loads from [[FSFile:GetSize]] is larger than that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_OldDB.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu just closes this file immediately after opening it, when opening it was successful at least.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the [[Config_Savegame|cfg]] data for blkID 0x000C0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| [[Extdata|&amp;quot;/gamecoin.dat&amp;quot;]]&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use [[FS:CreateFile]] with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM:GetTotalStepCount]], then uses [[FSFile:GetSize]]. Then the service handle for [[NDM_Services|&amp;quot;ndm:u&amp;quot;]] is initialized with srv_GetServiceHandle(done from a separate thread perhaps?). Then Home Menu writes to the already opened gamecoin.dat file.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:CardSlotIsInserted]] and [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[BOSS_Services|&amp;quot;boss:P&amp;quot;]] service handle initialization with srv_GetServiceHandle is done here. Then [[Services|srv_Subscribe]] is used with various noticationIDs. Home Menu then uses [[FS:IsSdmcDetected]] and [[FS:IsSdmcWritable]]. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000D0000. Home Menu uses boss:P command 0x4010082, then uses srv_GetServiceHandle for initializing service handles with the following services: [[News_Services|&amp;quot;news:s&amp;quot;]] and &amp;quot;cecd:s&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for service [[Friend_Services|&amp;quot;frd:a&amp;quot;]], then various service commands are used for that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000c&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu first attempts to use [[FS:CreateFile]] with &amp;quot;/bashotorya.dat&amp;quot;, which normally fails since that file already exists. Home Menu then repeats this with &amp;quot;/bashotorya2.dat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here, Home Menu opens the following SD extdata archives: Home Menu badge SD extdata, Home Menu SD extdata, and the theme-cache SD extdata.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/SaveData.dat&amp;quot;&lt;br /&gt;
| 0x2da0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/Cache.dat&amp;quot;&lt;br /&gt;
| 0x1688&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/CacheD.dat&amp;quot;&lt;br /&gt;
| 0x36c0&lt;br /&gt;
| This is used to read the cached icon data for the currently inserted gamecard, if any. Prior to doing the read, Home Menu uses [[FSFile:GetSize]]. After opening the file and before [[FSFile:GetSize]] is used, Home Menu uses AM commands 0x10070102(for theme DLC) and 0x30084(gamecard &amp;quot;title-listing&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu uses the following AM commands for theme DLC here: 0x10050084 and 0x10020104.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BodyCache.bin&amp;quot;&lt;br /&gt;
| 0x150000&lt;br /&gt;
| Before opening the file, Home Menu firsts opens this archive under a new archive-handle again, then closes it. Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/ThemeManage.bin&amp;quot;&lt;br /&gt;
| 0x8&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]](the result is filesize 0x800).&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BgmCache.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| The data is read from here as needed. After opening the file, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P commands 0x00040000 and 0x04040080 are used here. Home Menu opens NAND shared-extdata 0xf000000e, then closes it when the archive was opened successfully. Then Home Menu uses boss:P command 0x04500102 with the theme extdata, with string &amp;quot;thmtop&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x04040080 is used, with the input programID set to the gamecard one. Then boss:P commands 0x000E0000 and 0x00160082 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=SD and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00160082 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTM:GetStepHistory]] is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for [[AC_Services|&amp;quot;ac:u&amp;quot;]], then [[AC_Services|ACU:SetClientVersion]] is used. [[Services|srv_Subscribe]] is used, then ACU command 0x002F0004 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=NAND and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/gamecoin.dat&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use FS:CreateFile with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM_Services|PTM:GetTotalStepCount]], then uses FSFile:GetSize. Then Home Menu writes to the already opened gamecoin.dat file. &lt;br /&gt;
&lt;br /&gt;
At the same time as doing the above, Home Menu also uses(probably from a different thread) [[AMNet:GetTitleIDList3|AM:GetTitleIDList3]] with mediatype=NAND and maxTIDs=0x2000. Then Home Menu uses [[AMNet:ListTitles|AM:ListTitles]] with the NAND promotional-video titleID. Then Home Menu attempts to open the ExeFS:/icon in the NAND promotional-video title.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Prior to doing the write, Home Menu uses [[FSFile:GetSize]]. Home Menu writes 0x2490-bytes to the file here. From a separate thread(?) at the same time, Home Menu also uses [[AM:ReloadDBS]] and AM command 0x00130040 with input=0x1.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the u8 value from [[Config_Savegame|cfg]] blkID 0x000E0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AM:ReloadDBS]], AM command 0x10070102(for theme DLC), AM command 0x00130040, and AM command 0x10050084(for theme DLC) are used here.&lt;br /&gt;
At the same time(from a different thread?), the &amp;quot;act:u&amp;quot; service handle is initialized with srv_GetServiceHandle. Then ACTU commands 0x00010084 and 0x000600C2 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| The [[NIM_Services|&amp;quot;nim:u&amp;quot;]] service handle is initialized with srv_GetServiceHandle. Then NIMU commands 0x000F0042, 0x00170042, 0x00150000, and 0x00050000 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AM command 0x10020104(theme DLC) is used here. Then Home Menu CXI RomFS data is read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu CXI RomFS data is read. [[Filesystem_services|FS:GetSpecialContentIndex]] for the gamecard is used, then MICU initialization is done here(separate thread maybe?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[ACU:GetWifiStatus]] is used, the NAND shared-extdata 0xf000000b archive is then opened here.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idb.dat&amp;quot;&lt;br /&gt;
| 0x2008&lt;br /&gt;
| This first opens the file for writing, then uses [[FSFile:GetSize]](output filesize is 0x6d4000). Then it writes to the file using size 0, then closes the file. Then [[PTM_Services|PTM:GetStepHistory]] is used. Then Home Menu opens &amp;quot;/idbt.dat&amp;quot;, then reads 0x2008-bytes.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts using [[News_Services|&amp;quot;news:s&amp;quot;]] commands here. While Home Menu is doing this, it also uses(from another thread?) [[NS_and_APT_Services|APT:PrepareToStartNewestHomeMenu]], [[NIM_Services|NIMU:GetState]], and [[NDM_Services|NDMU:OverrideDefaultDaemons]] with input value 0xF.&lt;br /&gt;
Later with that news-command code still running, Home Menu also uses the following commands: [[ACU:GetWifiStatus]], [[NDM_Services|NDMU:QueryExclusiveMode]], and CECDS command 0x000E0000. Then [[Config_Savegame|cfg]] blkID 0x000D0000 is loaded.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idbt.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu writes 0x2008-bytes to this file.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000e&lt;br /&gt;
| &amp;quot;/versionList.dat&amp;quot;&lt;br /&gt;
| Loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00200082 is used with string &amp;quot;mmVerDl&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| When Home Menu is terminating(?), Home Menu writes 0x2490-bytes to the file here. After doing this, Home Menu opens, writes, and closes the file again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hardware reboot ===&lt;br /&gt;
During Home Menu start-up it uses [[APT:PrepareToStartNewestHomeMenu]]. If that doesn&#039;t return an error(normally NS returns 0xC8A0CFFC for that), Home Menu starts a hardware reboot with [[APT:StartNewestHomeMenu]] etc.&lt;br /&gt;
&lt;br /&gt;
On retail this essentially means a hardware-reboot will automatically trigger if [[Configuration_Memory|configmem]] SYSCOREVER doesn&#039;t match FIRM_SYSCOREVER, or when the current APPMEMTYPE doesn&#039;t match the default APPMEMTYPE for this Old3DS/New3ds model. The latter can happen with running New3DS NATIVE_FIRM with Old3DS system-titles, for example.&lt;br /&gt;
&lt;br /&gt;
== Returning to Home Menu from a crashed application ==&lt;br /&gt;
When returning to Home Menu from an application that didn&#039;t properly shutdown(like with an exception), PTM module writes data to the PTM system savedata. Then the system terminates Home Menu, and starts Home Menu again.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* http://www.nintendo.com/consumer/systems/3ds/en_na/menu_update.jsp&lt;br /&gt;
* http://www.nintendo.co.jp/netinfo/3ds/JPN/ja.html&lt;br /&gt;
* https://yls8.mtheall.com/ninupdates/reports.php&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20753</id>
		<title>Home Menu</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20753"/>
		<updated>2018-07-24T08:25:44Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* MngFile.dat */ copy paste error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Home Menu&#039;&#039;&#039; is the heart of the Nintendo 3DS. From there one can start games, applications, and access various processes including the friends list. It is launched by [[NS]], and is always running in the background in 3DS-mode except when other programID-high 00040030 applications like Internet Browser, Friend-List, etc are running. Home Menu is still running while [[System Settings]] is running, however the System Settings application does not allow directly returning to home-menu. The system will normally re-launch Home Menu when the Home Menu process crashes/terminates. When this re-launch occurs while Home Menu is active, Home Menu displays an error message which says to manually reboot the system.&lt;br /&gt;
&lt;br /&gt;
== System Versions ==&lt;br /&gt;
Nintendo devised a system, whereby updates would be delivered via two channels: &lt;br /&gt;
*Card Updates (CUP) - The Nintendo 3DS is updated with data from an [[System Update CFA|update partition]] on retail gamecard title. &lt;br /&gt;
*Network Updates (NUP) - The Nintendo 3DS is updated by downloading data from Nintendo&#039;s [[Title list|CDN]].&lt;br /&gt;
&lt;br /&gt;
CUPs will only deliver updates to core features, such as the Home Menu, [[Download Play]] etc. CUPs will not deliver updates to Network features, such as [[System Transfer]], [[Internet Browser]], [[StreetPass Mii Plaza]] or [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
NUPs can deliver updates to core features as well as (updated) Network Features.&lt;br /&gt;
&lt;br /&gt;
As a result of deciding to make a distinction between what content could be updated and how, Nintendo split the system version displayed by [[System Settings]] into two parts: [[CVer]] (Console Version) and [[NVer]] (Network Update Version). Represented as: &lt;br /&gt;
 &amp;lt;CVer Major&amp;gt;.&amp;lt;CVer Minor&amp;gt;.&amp;lt;CVer Micro&amp;gt;-&amp;lt;NUP Version&amp;gt;&amp;lt;NUP Region&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Console Version represents the version of the collectively installed core features. And the NUP Version represents the version of the collectively installed network features.&lt;br /&gt;
&lt;br /&gt;
So if a 3DS&#039; System Firmware read &#039;&#039;&#039;2.1.0-2U&#039;&#039;&#039;, it would indicate a console version of &#039;&#039;&#039;2.1.0&#039;&#039;&#039; and a NUP version of &#039;&#039;&#039;2U&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* CUPs can only update core content, so [[NVer]] is never updated with CUPs.&lt;br /&gt;
* NUPs will not update [[NVer]] if network features are not updated. (Best seen with the USA vs JPN/EUR 6.0.0 NUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CUPs are implemented by adding a [[System Update CFA]] to retail NCSD gamecard images. Nintendo generally creates CUPs after NUPs are released.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When updating the system from 4.5.0-6 to 4.5.0-10, the following titles are updated(in the order of title download+install): [[Health and Safety Information]], [[Nintendo 3DS Camera]], [[eShop]], [[System Transfer]], [[Internet Browser]], [[Title_list|0004009B00014102]], [[Title_list|0004009B00014202]], [[Title_list|0004009B00014302]], [[NVer]], and [[FIRM|AGB_FIRM]].&lt;br /&gt;
&lt;br /&gt;
=== System Versions List ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! System version &lt;br /&gt;
! Home Menu title version&lt;br /&gt;
! Release date &lt;br /&gt;
! Changelog &lt;br /&gt;
! System security [[3DS_System_Flaws|flaws]] fixed*&lt;br /&gt;
! Userland security [[3DS_Userland_Flaws|flaws]] fixed*&lt;br /&gt;
! 3DS-mode homebrew affected*&lt;br /&gt;
! CUP Released&lt;br /&gt;
! CDN Availability&lt;br /&gt;
! CDN Post Date&lt;br /&gt;
|-&lt;br /&gt;
| [[1.0.0-0|1.0.0-0]]&lt;br /&gt;
| 0&lt;br /&gt;
| February 26, 2011&lt;br /&gt;
| Shipped with 3DS on launch&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| February 18, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[1.1.0-1|1.1.0-1]] &lt;br /&gt;
| 0 &lt;br /&gt;
| February ?, 2011&lt;br /&gt;
| General bug fixes&lt;br /&gt;
Added 3D Video title to menu. (&amp;quot;For a Limited Time Only&amp;quot;)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| March 1, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.0.0-2|2.0.0-2]]&lt;br /&gt;
| 1029&lt;br /&gt;
| June 6/7, 2011&lt;br /&gt;
| [[eShop]] added, web browser available, [[System Transfer]] added. Full DSiWare data management available. [[Automatic_System_Update_Download|Automatic]] downloading for system updates added. Video stubbed.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 6, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-3|2.1.0-3]]&lt;br /&gt;
| 2049&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
| Fixes the Ridge Racer freeze.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-4|2.1.0-4]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
| System stability improvements and other adjustments.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.2.0-X|2.2.0]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 6, 2011&lt;br /&gt;
| CUP Only Release. Add &amp;quot;join game&amp;quot; feature to [[Friend List]]. Update from some game cards such as Super Mario 3D Land.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Unavailable&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-5|3.0.0-5]]&lt;br /&gt;
| 4111&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
| Added 3D video recording to the camera title, updated Mii Streetpass Plaza, [[System Transfer]] between 3DS systems available, improved eShop, home menu QR code scanning with QR codes containing URLs. [[Nintendo Zone]] is now always accessible, 3D video streaming support was added to NZone. This added support for running GBA VC titles via AGB_FIRM as well, support for GBA VC titles was also added to NATIVE_FIRM.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-6|3.0.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
| Only StreetPass Mii Plaza and the [[NVer]] title were updated. From Nintendo&#039;s release notes: &amp;quot;System stability improvements and other adjustments&amp;quot;.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.1.0-6|3.1.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown. Sighted preinstalled on some early European 3DS XLs.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [[4.0.0-7|4.0.0-7]]&lt;br /&gt;
| 5131&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
| Add folders to Home Menu, game patching added, buy more expensive games than 1000 yen in JPN. System titles for CHN, TWN, and KOR became available.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.1.0-8|4.1.0-8]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
| From changelog: &amp;quot;improvements to overall system stability and other minor adjustments&amp;quot;. Once updated to [[4.1.0-8]], the parental-controls PIN is no longer required for future system updates.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.2.0-9|4.2.0-9]]&lt;br /&gt;
| 6146&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
| Improved eShop safety for entering credit-card info, and behind the scenes improvements. Stored CC info will be deleted by this updated eShop, and can be re-entered again.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.3.0-10|4.3.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
| Updated eShop, bad word list and NZone hotspot list updated.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
| NZone hotspot list updated and TWL_FIRM updated for blocking flash cards.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10C]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
| China-only, the *only* updated title was [[System Settings]]. This title was updated to a version already available in TWN/KOR.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Available&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.5.0-10|4.5.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
| Flash-card block via updated TWL_FIRM and whitelist. NZone hotspot list updated as well.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[5.0.0-11|5.0.0-11]]&lt;br /&gt;
| 7172&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
| Many system titles including NATIVE_FIRM were updated, multiple vulnerabilities were fixed as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[5.1.0-11|5.1.0-11]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
| NATIVE_FIRM and NS were updated. According to the official change-log: &amp;quot;Resolves an issue that may prevent access to the System Settings or other features.&amp;quot;&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.0.0-11|6.0.0-12 (-11U)]]&lt;br /&gt;
| 8198&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Users can now back up save data for downloadable versions of Nintendo 3DS software and most Virtual Console games&amp;quot;. For EUR/JPN, the [[StreetPass Mii Plaza]] application and the [[Nintendo 3DS Camera]] application were updated. Other titles for all regions were updated as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-11|6.1.0-12 (-11U)]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-12U]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
| This USA-only update added the updated network features applications which were first released in JPN/EUR with the [[6.0.0-11|6.0.0-12 NUP]] update.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.2.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
| This update added support for the StreetPass relay feature, updated TWL_FIRM, and updated the Nintendo Zone hotspots list.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.3.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
| See [[6.3.0-12|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.4.0-12]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
| See [[6.4.0-12|this]](Only for the KOR and TWN regions).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 9230&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
| See [[7.0.0-13|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-14]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
| See [[7.1.0-14|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-15]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
| See [[7.1.0-15|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-16]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
| See [[7.1.0-16|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.2.0-17]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
| See [[7.2.0-17|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
| See [[8.0.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
| See [[8.1.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-19]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
| See [[8.1.0-19|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-0 New3DS]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
| See [[8.1.0-0 New3DS|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| 8.1.0-19&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
| Japan-only &amp;quot;update&amp;quot;, see [http://yls8.mtheall.com/ninupdates/reports.php?date=10-02-14_02-05-03&amp;amp;sys=ctr here]. The only change was that a new title([[New_3DS]]-only system application) was added, CVer/NVer titles were not even updated. The initial version of this [[Title_list|title]] is a stub.&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| v11272&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
| See [[9.0.0-20|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (K)&lt;br /&gt;
| Available&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.1.0-20J]]&lt;br /&gt;
| v14336(JPN-region title)&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
| Japan-only, see [[9.1.0-20J|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.2.0-20]]&lt;br /&gt;
| &lt;br /&gt;
| October 29, 2014&lt;br /&gt;
| See [[9.2.0-20|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 29, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 8, 2014&lt;br /&gt;
| See [[9.3.0-21|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 8, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.4.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 11, 2014&lt;br /&gt;
| See [[9.4.0-21|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 11, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| &lt;br /&gt;
| February 2, 2015&lt;br /&gt;
| See [[9.5.0-22|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| February 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-23]]&lt;br /&gt;
| &lt;br /&gt;
| March 2, 2015&lt;br /&gt;
| See [[9.5.0-23|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| As above&lt;br /&gt;
| Available&lt;br /&gt;
| March 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
| &lt;br /&gt;
| March 23, 2015&lt;br /&gt;
| See [[9.6.0-24|this]].&lt;br /&gt;
| See [[9.6.0-24|here]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 23, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.7.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| April 20, 2015&lt;br /&gt;
| See [[9.7.0-25|this]].&lt;br /&gt;
| Probably none?&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| April 20, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.8.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| June 1, 2015&lt;br /&gt;
| See [[9.8.0-25|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| June 1, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| &lt;br /&gt;
| July 13, 2015&lt;br /&gt;
| See [[9.9.0-26|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| July 13, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.0.0-27|10.0.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 8, 2015&lt;br /&gt;
| See [[10.0.0-27|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 8, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.1.0-27|10.1.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 14, 2015&lt;br /&gt;
| See [[10.1.0-27|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| September 14, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.2.0-28|10.2.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| October 19, 2015&lt;br /&gt;
| See [[10.2.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 19, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.3.0-28|10.3.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| November 9, 2015&lt;br /&gt;
| See [[10.3.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| November 9, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.4.0-29|10.4.0-29]]&lt;br /&gt;
| &lt;br /&gt;
| January 18, 2016&lt;br /&gt;
| See [[10.4.0-29|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Launching old Ironfall was blocked.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 18, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.5.0-30|10.5.0-30]]&lt;br /&gt;
| &lt;br /&gt;
| January 25, 2016&lt;br /&gt;
| See [[10.5.0-30|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| January 25, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.6.0-31|10.6.0-31]]&lt;br /&gt;
| &lt;br /&gt;
| February 22, 2016&lt;br /&gt;
| See [[10.6.0-31|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U)&lt;br /&gt;
| Available&lt;br /&gt;
| February 22, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| March 14, 2016&lt;br /&gt;
| See [[10.7.0-32|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 14, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.0.0-33|11.0.0-33]]&lt;br /&gt;
| &lt;br /&gt;
| May 9, 2016&lt;br /&gt;
| See [[11.0.0-33|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| May 9, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.1.0-34|11.1.0-34]]&lt;br /&gt;
| &lt;br /&gt;
| September 13, 2016&lt;br /&gt;
| See [[11.1.0-34|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.2.0-35|11.2.0-35]]&lt;br /&gt;
| &lt;br /&gt;
| October 24, 2016&lt;br /&gt;
| See [[11.2.0-35|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 24, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.3.0-36|11.3.0-36]]&lt;br /&gt;
| &lt;br /&gt;
| February 6, 2017&lt;br /&gt;
| See [[11.3.0-36|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 6, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.4.0-37|11.4.0-37]]&lt;br /&gt;
| &lt;br /&gt;
| April 10, 2017&lt;br /&gt;
| See [[11.4.0-37|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| April 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.5.0-38|11.5.0-38]]&lt;br /&gt;
| &lt;br /&gt;
| July 10, 2017&lt;br /&gt;
| See [[11.5.0-38|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.6.0-39|11.6.0-39]]&lt;br /&gt;
| &lt;br /&gt;
| September 18, 2017&lt;br /&gt;
| See [[11.6.0-39|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 18, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.7.0-40|11.7.0-40]]&lt;br /&gt;
| &lt;br /&gt;
| June 18, 2018&lt;br /&gt;
| See [[11.7.0-40|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 18, 2018&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot;: This includes known flaws, and any fixed flaws discovered via code bin-diff.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot; and &amp;quot;3DS-mode homebrew affected&amp;quot; only apply to the changes done with that specific system-update(&amp;quot;affected&amp;quot; does not include hax codebases breaking *just* due to updated codebins).&lt;br /&gt;
&lt;br /&gt;
[[Category:Nintendo Software]]&lt;br /&gt;
&lt;br /&gt;
== Auto-Boot Function ==&lt;br /&gt;
When the Home Menu is initially loaded by [[NS]], it checks the gamecard ExeFS:/[[SMDH|icon]] for the auto-boot flag. If the auto-boot flag is set, it will load the application on the cartridge and the home menu will not remain running in the background, or at least not in an operational state. Using software cues to return to the home menu, or sleep menu while in this state, causes a shutdown.&lt;br /&gt;
&lt;br /&gt;
Notable features of demo titles:&lt;br /&gt;
*Auto-boot demos generally disable the functionality of the home button.&lt;br /&gt;
*The &#039;&#039;New Super Mario Bros 2&#039;&#039; demo, retained the functionality of the home button, and had an timer which triggered the demo to quit after a period of inactivity.&lt;br /&gt;
&lt;br /&gt;
Auto-boot cartridges, can bypass some of the functions of the Home Menu. Auto Booted software:&lt;br /&gt;
* Doesn&#039;t show usage history in the [[Activity Log]]&lt;br /&gt;
* Bypasses Parental controls&lt;br /&gt;
* Bypasses Forced Game Card Updates&lt;br /&gt;
* Bypasses Initial 3DS Setup&lt;br /&gt;
* The console does not have a friends list presence.&lt;br /&gt;
* Is still subject to region lock(see below).&lt;br /&gt;
&lt;br /&gt;
Region lock is still active, so the home menu will refuse to launch demos with incorrect region lock will not load, displaying &amp;quot;An Error has Occurred&amp;quot;. However, game card update partition checks are not done, which allows launching demos that have region free encoding, but have an alternate(or even invalid) region update partition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following auto-boot paths can be used by Home Menu, checked in the same order listed below(the above gamecard auto-boot is checked before this):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and X&lt;br /&gt;
| This launches [[System Settings]] for touchscreen calibration.&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and Y&lt;br /&gt;
| This launches [[System Settings]] for circlepad calibration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is only checked when the low u16 from [[Config_Savegame|config]] block 0x00110000 is value zero(normally this is non-zero). Thus, the below is only handled when a system setup is required.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, X, Y, A, and B, a 3DS gamecard must be inserted as well.&lt;br /&gt;
| This launches the gamecard application. Note that pressing the HOME button in the gamecard application launched this way will only result in the system shutting down.&lt;br /&gt;
|-&lt;br /&gt;
| This is used when the above path isn&#039;t used.&lt;br /&gt;
| This launches System Settings for the system setup.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Region Lockout ==&lt;br /&gt;
&lt;br /&gt;
One of the Home Menu&#039;s functions, is to regulate region lockout. The region lockout data for any given title is held in the [[SMDH#BNR Region|ICN data]]. There are 6 regions of which have their own region lockout, Japan, USA, Europe(including Nintendo Australia), China, Taiwan and Korea. There is also a value which makes a title exempt from region lockout, and consequently accessible from any region of 3DS.&lt;br /&gt;
&lt;br /&gt;
The region-field stored in the [[SMDH|ICN-data]] is only checked when Home Menu itself launches a title, not when other titles use NS to have Home Menu launch titles. This isn&#039;t actually useful for gamecard region-free however, due to the gamecard system-updates, see below.&lt;br /&gt;
&lt;br /&gt;
Also note that while some gamecard games are mostly region-free(main CXI is identical for all regions of the gamecard), those gamecards can&#039;t actually be launched with all 3DS regions due to the gamecard system-update, see below. Note that the main CXI being identical for all regions of a gamecard also means the savedata keyY is identical for all regions of that gamecard too(except for old system-version &amp;lt;v2.2 games, in some cases, due to different cardIDs).&lt;br /&gt;
&lt;br /&gt;
=== Effects of Region Lockout  ===&lt;br /&gt;
Every 3DS title regardless of location (NAND/SD Card/Game Card) is subject to region lockout scrutiny by the Home Menu. And the home menu treats &#039;out-of-region&#039; titles by simply refusing to show them on the home menu. No messages are shown on the home menu to notify the user, the title is simply ignored. However out-of-region SD Card titles, will appear and quickly disappear, while all the SD Titles are being processed. In cases where access to the home menu GUI is not needed to launch the title (like in the case of kiosk demos), the home menu states an error has occurred, and launching of the title is stopped.&lt;br /&gt;
&lt;br /&gt;
=== Game Card Updates ===&lt;br /&gt;
Either intentionally a region lock mechanism or not, the function which checks the game card update partition returns an error when it is detected the update is for a region other than the 3DS&#039;s region (Most likely triggered by the absence of the correct CVer title). And errors returned from checking the update partition, will result in the home menu displaying &amp;quot;This Game Card cannnot be used&amp;quot;, when the user attempts to launch the title.&lt;br /&gt;
&lt;br /&gt;
== Home-menu [[SpotPass]] usage ==&lt;br /&gt;
&lt;br /&gt;
Home-menu originally used two domains with HTTPS for SpotPass. SpotPass stores this content in Home-menu&#039;s NAND shared extdata.&lt;br /&gt;
&lt;br /&gt;
* The system notifications are downloaded from: &amp;lt;nowiki&amp;gt;https://a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;/&amp;lt;langcode&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; Where langcode is the two-character language codes from [[Config Savegame#Languages|config]], and regionID is from the below table. &amp;lt;filename&amp;gt; is bashoX/sysmsgX where X is 0-3.&lt;br /&gt;
* https://pls.c.shop.nintendowifi.net/pl/upload This URL is used for uploading data from the home menu NAND shared extdata, it&#039;s unknown what this is used for. This data is uploaded every 24 hours.&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;https://npul.c.app.nintendowifi.net/p01/recv/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; This is used for uploading unknown data from extdata. &amp;lt;filename&amp;gt; can be one of the following:&lt;br /&gt;
** &amp;quot;phu&amp;quot;&lt;br /&gt;
** &amp;quot;tiu&amp;quot; The POST data contains a list of [[BOSS_Services|BOSS]] taskIDs etc. This seems to be only for Nintendo titles?(system+eShop apps)&lt;br /&gt;
** &amp;quot;splu&amp;quot;&lt;br /&gt;
** &amp;quot;sendmgn&amp;quot; For this it appears SpotPass does a HTTP POST with data originally from Launcher.dat?&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Region&lt;br /&gt;
! ID&lt;br /&gt;
|-&lt;br /&gt;
| JPN&lt;br /&gt;
| gWr4JXxb2mKTG3lq&lt;br /&gt;
|-&lt;br /&gt;
| NA&lt;br /&gt;
| uuI82221UKkqmtbp&lt;br /&gt;
|-&lt;br /&gt;
| EUR / Others&lt;br /&gt;
| UrXSeurnxhPrq7AS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SpotPass content payload for notifications begin with a header, followed by an [[SMDH|icon]] and the UTF-16 text, and various metadata.&lt;br /&gt;
&lt;br /&gt;
=== VersionList ===&lt;br /&gt;
During startup, Home Menu loads &amp;quot;/versionList.dat&amp;quot; from NAND extdata 0xf000000e. This is downloaded via SpotPass, the file-data downloaded via HTTPS here is raw (no SpotPass container):&lt;br /&gt;
* Retail: [https://tagaya-ctr.cdn.nintendo.net/tagaya/versionlist]&lt;br /&gt;
* Dev-unit: [https://tagaya-dev-ctr.cdn.nintendo.net/tagaya/versionlist] The titles listed in this are not available on the [[Title list|normal]] CDN.&lt;br /&gt;
&lt;br /&gt;
This is a list of title-updates available on the eShop, for regular app titles and update-titles. This is what Home Menu checks to determine whether the currently selected application needs to be updated or not. When an Internet connection is not available or wifi is disabled, Home Menu will skip VersionList handling/messages when you launch applications.&lt;br /&gt;
&lt;br /&gt;
File structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| The first u32 is normally 0x1, the rest is normally all-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| &amp;lt;Filesize-0x10&amp;gt;&lt;br /&gt;
| Title entries, 0x10-bytes each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Title entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 TitleID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 titleversion&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown u32, usually zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[BOSS_Services|BOSS]] usage notes ===&lt;br /&gt;
Home Menu uses 4 hard-coded NsDataIds: 0x1, 0x2, 0x3, and 0x4, under a loop in the same function for writing to &amp;quot;bashotorya.dat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Automatic System Update Download ==&lt;br /&gt;
See [[Automatic System Update Download]].&lt;br /&gt;
&lt;br /&gt;
== Home Menu Error Messages ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dialog Text&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;An error has occured. Please save your data ... then restart the system&amp;quot;&lt;br /&gt;
| This dialog is displayed when a system applet(including Home Menu) crashes/terminates. This dialog is also displayed for system errors as well.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Home Menu Themes ==&lt;br /&gt;
See [[Home_Menu/Themes|here]].&lt;br /&gt;
&lt;br /&gt;
As of [[11.0.0-33]] Home Menu themes are only supported with USA, EUR, and JPN. CHN Home Menu was last updated with v7.0, and TWN doesn&#039;t even have a Home Menu settings menu(just the old screen brightness config menu + an [[amiibo Settings]] icon on the right side of the browser icon).&lt;br /&gt;
&lt;br /&gt;
KOR Home Menu doesn&#039;t have the theme-settings menu button. While this does have the theme handling code, it isn&#039;t actually usable since extdataID 0x0 is used for theme-extdata for non-&amp;lt;JPN/USA/EUR&amp;gt; regions(which is invalid).&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[System_SaveData|NAND]] savedata ==&lt;br /&gt;
=== Launcher.dat ===&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;
| Launcher.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| Unknown, normally 0x1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of titleIDs. For an unused entry, the u64 value is ~0(in that case, the corresponding entries at 0xD9A/0x106A for this titleID are not used either). This is used for the icons displayed on the main Home Menu screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9A&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| Array of 360 s16 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position, 0x0 for the very first icon, 0x1 for the next one and so on. This is completely linear, no X/Y coordinates. Implemented with the format-version for [[4.0.0-7|4.0.0-X]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x106A&lt;br /&gt;
| 0x168&lt;br /&gt;
| Array of 360 s8 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position. When an s8 here is -1(which is the normal value), the icon is located with the first chunk of icons(outbuf+0), otherwise the base address is outbuf+0xB40+&amp;lt;s8val*0x1E0&amp;gt;(which is equivalent to 60 icons * s8val). Implemented with the format-version for [[4.0.0-7|4.0.0-X]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SD ExtData ==&lt;br /&gt;
The SD ExtData [[Extdata#Filesystem|File System]] for Home Menu introduced with [[2.0.0-2|2.0.0-X]] is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── SaveData.dat&lt;br /&gt;
     ├── Cache.dat&lt;br /&gt;
     └── CacheD.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
|  icon&lt;br /&gt;
|  Stubbed. Always image 00000002.&lt;br /&gt;
|  0x4 Bytes&lt;br /&gt;
|  n/a&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  SaveData.dat&lt;br /&gt;
|  Always image 00000003.&lt;br /&gt;
|  0x2cb0 Bytes (0x2da0 starting with [[4.0.0-7]])&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/SaveData.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  Cache.dat&lt;br /&gt;
|  Indexes and records details for the cached icon data. Always image 00000004.&lt;br /&gt;
|  0x1688 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/Cache.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  CacheD.dat&lt;br /&gt;
|  Cached icon data for Home Menu. Always image 00000005.&lt;br /&gt;
|  0x4cfe00 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/CacheD.dat Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cache.dat &amp;amp; CacheD.dat ===&lt;br /&gt;
These two files work in tandem to allow the home menu to cache icon data for applications which are presented on the Home Menu. The size of both files suggests a maximum cache size of 360 icons. Cache.dat stores details about the cache icon data, and CacheD.dat stores the icon data. The icon cache stores icon data for *all* applications shown on the Home Menu, this includes DSi NAND Titles, and DS(i) cartridges. The format of cached DS(i) icon data is not understood, but they are the same size as 3DS icon data (0x36c0).&lt;br /&gt;
&lt;br /&gt;
In Cache.dat the first 8 bytes are a header where the first byte is the format-version, then follows each icon slots&#039;s entry in the format:&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;
|  8&lt;br /&gt;
|  Title ID in Little Endian&lt;br /&gt;
|-&lt;br /&gt;
|  0x8&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|-&lt;br /&gt;
|  0xc&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All unused entries have the Title IDs filled with &amp;quot;0xff&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In CacheD.dat, the icon data is concatenated together, with the first icon at offset 0x0.&lt;br /&gt;
&lt;br /&gt;
=== SaveData.dat ===&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;
| SaveData.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of titleIDs(used with icons). Equivalent to the same array in Launcher.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB48&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 bool array with 360 entries. Some SD-only icon array. Probably an array for each icon present status? Each entry is only known to be set to 0x00 or 0x01, with the former being the default.&lt;br /&gt;
|-&lt;br /&gt;
| 0xCB0&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| s16 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF80&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13b8&lt;br /&gt;
| 0x8&lt;br /&gt;
| Theme entry structure for the regular theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13c0&lt;br /&gt;
| 0x8*10(0x50)&lt;br /&gt;
| Array of theme entry structures for theme [[9.3.0-21|shuffling]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x141b&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = one regular theme, 1 = multiple themes for theme [[9.3.0-21|shuffle]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The icon arrays above are handled exactly the same way as Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
When the theme cache is enabled via the above fields, Home Menu loads the cache at startup(if the used theme structure is valid).&lt;br /&gt;
&lt;br /&gt;
Theme entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Theme index: for DLC this is the content-index, for built-in themes this is an index for an array selecting the built-in theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero. This is the low 8-bits in the DLC titleID that this theme was originally loaded from.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| Theme type, the valid range is 0..5. 0 = none, 1 = built-in theme from Home Menu RomFS, 2 = theme data loaded from SD cache / content archive. 3 = ?, 4 = ?, 5 = ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When the theme-type is value1 the themeindex must be &amp;lt;9. When the theme-type is value2 the themeindex has to be non-zero, and the u8 at offset 0x4 must not be &amp;gt;=10.&lt;br /&gt;
&lt;br /&gt;
The theme-loader code (besides the AM &amp;lt;is-current-themeindex-DLC-installed&amp;gt; code) handles all theme-types &amp;gt;=2 the same way. However, it seems all DLC AM code involving checking the currently-used theme DLC only gets executed when the theme-type is value2. The code in the theme-loader for that also checks that a certain Home Menu state flag is non-zero, before running the AM DLC code(it&#039;s unknown where this flag value comes from).&lt;br /&gt;
&lt;br /&gt;
==== SaveData.dat format versions ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Version value&lt;br /&gt;
!  Filesize&lt;br /&gt;
!  Implemented with Home Menu system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0x2CB0&lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.0.0-20|9.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 (Latest version as of v10.6-v11.0 Home Menu)&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Home Menu code for writing the updated SaveData.dat to FS is broken when the filesize is smaller than expected due to being from an older format-version originally. When writing to the file, Home Menu checks the filesize then attempts to use [[FSFile:SetSize]] on mismatch, but [[FSFile:SetSize]] can&#039;t be used with extdata(error from [[FSFile:SetSize]] appears to be ignored). When writing to SaveData.dat the write-size is the one for the current format-version, but since extdata files are fixed-size this will only result in the first {original filesize} bytes being written(result-code = 0xE0E046C1).&lt;br /&gt;
&lt;br /&gt;
Basically, unless the extdata is deleted from the SD card FS manually, the SaveData.dat filesize will never be successfully updated from an old filesize to the current-format filesize by Home Menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[Home_Menu/Themes|Theme]] SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── ThemeManage.bin&lt;br /&gt;
     ├── BodyCache.bin&lt;br /&gt;
     ├── BgmCache.bin&lt;br /&gt;
     └── nsalist&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| ThemeManage.bin&lt;br /&gt;
| Theme management info. The filesize must match 0x800, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x800&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BodyCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS body_LZ.bin file. The filesize must match 0x150000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x150000&lt;br /&gt;
| 00000004&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| BgmCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS bgm.bcstm file. The filesize must match 0x337000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x337000&lt;br /&gt;
| 00000005&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| nsalist&lt;br /&gt;
| Contains the list of DLC themes(IDs+prices), downloaded via [[SpotPass]].&lt;br /&gt;
| &lt;br /&gt;
| 00000007&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin contain cached theme data for the currently used DLC theme. ThemeManage.bin is loaded by Home Menu during startup. The cached theme data is loaded at startup when a DLC theme is selected. This also contains theme-shop [[SpotPass]] data.&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin are all-zero when no theme is selected.&lt;br /&gt;
&lt;br /&gt;
Starting with [[9.3.0-21|9.3.0-X]] Home Menu can use more files in this extdata, for theme shuffling. &amp;quot;theme:/ThemeManage.bin&amp;quot; &amp;quot;theme:/BgmCache_%02d.bin&amp;quot; &amp;quot;theme:/BodyCache_rd.bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ThemeManage.bin ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally value 0x1?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached body_LZ.bin data.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached bgm.bcstm data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| When a DLC theme is selected, this is the content-index of the DLC theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually value 0x200 when the data in theme-cache is actually used?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total filesize is 0x800-bytes, normally the data starting at offset 0x1C is all-zero.&lt;br /&gt;
&lt;br /&gt;
When no theme is actually used,  the only non-zero fields are the following: the u32 stored at offset 0x0 in ThemeManage.bin is value 0x1, with offset 0x10 u32 set to value 0x1.&lt;br /&gt;
&lt;br /&gt;
== Home Menu badge SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── BadgeData.dat&lt;br /&gt;
     └── BadgeMngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
|-&lt;br /&gt;
| BadgeData.dat&lt;br /&gt;
| [[Home_Menu#BadgeData.dat|See below.]]&lt;br /&gt;
| 0xF4DF80&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BadgeMngFile.dat&lt;br /&gt;
| [[Home_Menu#BadgeMngFile.dat|See below.]]&lt;br /&gt;
| 0xD4A8&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeData.dat ===&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;
| 100 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Set Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x35E80&lt;br /&gt;
| 1000 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x250F80&lt;br /&gt;
| 100 * 0x2000&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 Badge Set Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0x318F80&lt;br /&gt;
| 1000 * 0x2800&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 + Tiled A4 64x64 Badge Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0xCDCF80&lt;br /&gt;
| 1000 * 0xA00&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 32x32 + Tiled A4 32x32 Badge Icons&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeMngFile.dat ===&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;
| u32, Must Be Zero&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Badge Sets&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Placed Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Set in Home Menu (0xFFFFFFFF = All Badges)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Column in All Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Nintendo Network ID Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x338&lt;br /&gt;
| Unknown (always zeros? unused?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x358&lt;br /&gt;
| 0x80&lt;br /&gt;
| Used Badge Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D8&lt;br /&gt;
| 0x10&lt;br /&gt;
| Used Badge Set Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E8&lt;br /&gt;
| 1000 * 0x28&lt;br /&gt;
| [[Home_Menu#BadgeInfo|BadgeInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xA028&lt;br /&gt;
| 100 * 0x30&lt;br /&gt;
| [[Home_Menu#BadgeSetInfo|BadgeSetInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2E8&lt;br /&gt;
| 360 * 0x18&lt;br /&gt;
| [[Home_Menu#BadgeLayoutSlot|BadgeLayoutSlot]] Entries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeIdentifier ====&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;
| u32, Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Sub ID (used for multi-part badges)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetIdentifier ====&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;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x2710)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeInfo ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Number Placed&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Quantity&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (packed data?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x10&lt;br /&gt;
| u64[2], Shortcut Title ID (twice, once per u64)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetInfo ====&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;
| 0x18&lt;br /&gt;
| [[Home_Menu#BadgeSetIdentifier|BadgeSetIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Start Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeLayoutSlot ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Folder (0xF0FF = Icon of a folder, 0xFFFFFFFF = No folder)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file size must match 0xD4A8, otherwise the Home Menu code returns an error.&lt;br /&gt;
&lt;br /&gt;
== Home Menu theme layout SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     └── MngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| MngFile.dat&lt;br /&gt;
| See below.&lt;br /&gt;
| 0x004D1280&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MngFile.dat ===&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;
| u32, must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| array of 8 u8, 0 if the corresponding layout slot is not set, 1 if it is&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x3000 * 8&lt;br /&gt;
| Start of the layout entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1800C&lt;br /&gt;
| 0xC&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x18010&lt;br /&gt;
| 0x2DA0 * 8&lt;br /&gt;
| Start of the [[Home_Menu#SaveData.dat|SaveData.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2ED10&lt;br /&gt;
| 0xD4A8 * 8&lt;br /&gt;
| Start of the [[Home_Menu#BadgeMngFile.dat|BadgeMngFile.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x99250&lt;br /&gt;
| 0x30&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x99280&lt;br /&gt;
| 256*3*8 * 400/8 * 8&lt;br /&gt;
| Start of the top screen (400x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F1280&lt;br /&gt;
| 256*3*8 * 320/8 * 8&lt;br /&gt;
| Start of the bottom screen (320x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Layout entries 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;
| 0x2558&lt;br /&gt;
| Exact copy of the entire Home Menu [[System_SaveData]] [[Home_Menu#Launcher.dat|Launcher.dat]], this is the actual layout data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2558&lt;br /&gt;
| 0xAA8&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize must match 0x004D1280, otherwise the Home Menu code returns an error. The saved Home Menu layouts are stored here.&lt;br /&gt;
&lt;br /&gt;
When saving a layout, the total layout field is increased, then a new layout entry is created with the contents of the current Home Menu [[System_SaveData]](NAND savedata) Launcher.dat + a screenshot of the main Home Menu screen is written. When loading a layout, Launcher.dat in savedata is written with the current Launcher.dat data already stored in memory(unknown if any data gets changed for it here), then data from the layout entry is copied into the Home Menu [[System_SaveData]] Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
Home Menu *only* accesses this file with the Home Menu layout-settings menu / when entering that menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu startup ==&lt;br /&gt;
The following is what Home Menu does at startup(converted from cmd-logs), from [[9.4.0-21]], in the same order Home Menu does it.&lt;br /&gt;
&lt;br /&gt;
Originally Home Menu mounted sdmc in main(), starting(?) with [[6.0.0-11]] Home Menu only has sdmc mounted while handling [[SD_Savedata_Backups]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Archive&lt;br /&gt;
!  Filename&lt;br /&gt;
!  Read size&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_init(), then srv_GetServiceHandle is used to initialize the service handles for the following services: [[NS_and_APT_Services|ns:s]], [[PTM_Services|ptm:sysm]], and [[Config_Services|cfg:s]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[CfgS:SecureInfoGetByte101]] and [[CfgS:GetLocalFriendCodeSeed]] are used, the output data from these are not used. If either of these return an error, Home Menu uses [[ERR:Throw]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Cfg:GetSystemModel]] is then used to initialize a Home Menu state field.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then loads the system language via [[CfgS:GetConfigInfoBlk2]], and uses [[Cfg:SecureInfoGetRegion]], to initialize Home Menu region/language state. Home Menu then uses [[Cfg:SecureInfoGetRegion]] again, then loads the [[Config_Savegame|CountryInfo]] via [[CfgS:GetConfigInfoBlk2]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu initializes [[Filesystem_services|fs:USER]] here. Home Menu then mounts the Home Menu CXI RomFS. Then Home Menu uses [[Filesystem_services|FSUSER:GetPriority]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts APT initialization / using APT service commands here. Eventually Home Menu then [[NSS:LaunchTitle|launches]] various system-modules.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu attempts to open NAND shared-[[extdata]] 0xe0000000, which will normally fail since it doesn&#039;t exist.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[Application_Manager_Services|AM]] command 0x00130040, with input u8 = value 0x0. Home Menu continues using APT commands after this.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[HID_Services|hid:SPVR]] service initialization is done here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTMSYSM:GetShellStatus]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read to check the auto-boot flag(see the auto-boot section on this page). The system-setup-required flag is then read here if needed, as mentioned under the auto-boot section of this page.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then uses cfg commands to load system language, region, and CountryInfo.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/menu_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/hud_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[NS_and_APT_Services|APT:GetSharedFont]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/font/Hud_JP.bcfnt&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Here Home Menu loads the [[Config_Savegame|cfg]] state for blkID 0x50005.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu loads the GPU shaders from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does DSP initialization then starts using DSP commands etc + loads sound data from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does GSP initialization.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[APT:GetCaptureInfo]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]], [[PTMSYSM:GetSoftwareClosedFlag]], and [[PTMSYSM:ClearSoftwareClosedFlag]]. Home Menu then uses [[PTM_Services|PTMSYSM:GetShellStatus]] 3 times in a row. Starting from here, Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]] frequently(presumably from a separate thread).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the archive for the Home Menu [[System_SaveData]] here. Then Home Menu attempts to open &amp;quot;/Launcher.dat&amp;quot; for reading, when successful Home Menu just closes the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| 0x2490&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| System CFA, titleID for USA: 0004009B00013302&lt;br /&gt;
| &amp;quot;/country.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[NS CFA]]&lt;br /&gt;
| &amp;quot;/ctr_backup_black_list&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu first reads 0x10-bytes from offset 0x0, then after that it reads the rest of the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] the camera system-module here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| NGWord bad word list CFA&lt;br /&gt;
| &amp;quot;/version.dat&amp;quot;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Home Menu mounts the ngword archive here, then reads version.dat. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000A0000.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] various system-modules here(from a separate thread?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the following NAND shared extdata archives here: 0xf0000001, 0xf0000002, 0xf0000009, 0xf000000b, 0xf000000c, 0xf000000d, and 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000b&lt;br /&gt;
| &amp;quot;/ubll.lst&amp;quot;&lt;br /&gt;
| 0x2ee0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_DB.dat&amp;quot;&lt;br /&gt;
| 0xe4c0&lt;br /&gt;
| Home Menu only does one read with size 0xe4c0 for this, even though the value it loads from [[FSFile:GetSize]] is larger than that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_OldDB.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu just closes this file immediately after opening it, when opening it was successful at least.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the [[Config_Savegame|cfg]] data for blkID 0x000C0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| [[Extdata|&amp;quot;/gamecoin.dat&amp;quot;]]&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use [[FS:CreateFile]] with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM:GetTotalStepCount]], then uses [[FSFile:GetSize]]. Then the service handle for [[NDM_Services|&amp;quot;ndm:u&amp;quot;]] is initialized with srv_GetServiceHandle(done from a separate thread perhaps?). Then Home Menu writes to the already opened gamecoin.dat file.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:CardSlotIsInserted]] and [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[BOSS_Services|&amp;quot;boss:P&amp;quot;]] service handle initialization with srv_GetServiceHandle is done here. Then [[Services|srv_Subscribe]] is used with various noticationIDs. Home Menu then uses [[FS:IsSdmcDetected]] and [[FS:IsSdmcWritable]]. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000D0000. Home Menu uses boss:P command 0x4010082, then uses srv_GetServiceHandle for initializing service handles with the following services: [[News_Services|&amp;quot;news:s&amp;quot;]] and &amp;quot;cecd:s&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for service [[Friend_Services|&amp;quot;frd:a&amp;quot;]], then various service commands are used for that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000c&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu first attempts to use [[FS:CreateFile]] with &amp;quot;/bashotorya.dat&amp;quot;, which normally fails since that file already exists. Home Menu then repeats this with &amp;quot;/bashotorya2.dat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here, Home Menu opens the following SD extdata archives: Home Menu badge SD extdata, Home Menu SD extdata, and the theme-cache SD extdata.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/SaveData.dat&amp;quot;&lt;br /&gt;
| 0x2da0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/Cache.dat&amp;quot;&lt;br /&gt;
| 0x1688&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/CacheD.dat&amp;quot;&lt;br /&gt;
| 0x36c0&lt;br /&gt;
| This is used to read the cached icon data for the currently inserted gamecard, if any. Prior to doing the read, Home Menu uses [[FSFile:GetSize]]. After opening the file and before [[FSFile:GetSize]] is used, Home Menu uses AM commands 0x10070102(for theme DLC) and 0x30084(gamecard &amp;quot;title-listing&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu uses the following AM commands for theme DLC here: 0x10050084 and 0x10020104.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BodyCache.bin&amp;quot;&lt;br /&gt;
| 0x150000&lt;br /&gt;
| Before opening the file, Home Menu firsts opens this archive under a new archive-handle again, then closes it. Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/ThemeManage.bin&amp;quot;&lt;br /&gt;
| 0x8&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]](the result is filesize 0x800).&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BgmCache.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| The data is read from here as needed. After opening the file, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P commands 0x00040000 and 0x04040080 are used here. Home Menu opens NAND shared-extdata 0xf000000e, then closes it when the archive was opened successfully. Then Home Menu uses boss:P command 0x04500102 with the theme extdata, with string &amp;quot;thmtop&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x04040080 is used, with the input programID set to the gamecard one. Then boss:P commands 0x000E0000 and 0x00160082 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=SD and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00160082 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTM:GetStepHistory]] is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for [[AC_Services|&amp;quot;ac:u&amp;quot;]], then [[AC_Services|ACU:SetClientVersion]] is used. [[Services|srv_Subscribe]] is used, then ACU command 0x002F0004 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=NAND and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/gamecoin.dat&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use FS:CreateFile with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM_Services|PTM:GetTotalStepCount]], then uses FSFile:GetSize. Then Home Menu writes to the already opened gamecoin.dat file. &lt;br /&gt;
&lt;br /&gt;
At the same time as doing the above, Home Menu also uses(probably from a different thread) [[AMNet:GetTitleIDList3|AM:GetTitleIDList3]] with mediatype=NAND and maxTIDs=0x2000. Then Home Menu uses [[AMNet:ListTitles|AM:ListTitles]] with the NAND promotional-video titleID. Then Home Menu attempts to open the ExeFS:/icon in the NAND promotional-video title.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Prior to doing the write, Home Menu uses [[FSFile:GetSize]]. Home Menu writes 0x2490-bytes to the file here. From a separate thread(?) at the same time, Home Menu also uses [[AM:ReloadDBS]] and AM command 0x00130040 with input=0x1.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the u8 value from [[Config_Savegame|cfg]] blkID 0x000E0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AM:ReloadDBS]], AM command 0x10070102(for theme DLC), AM command 0x00130040, and AM command 0x10050084(for theme DLC) are used here.&lt;br /&gt;
At the same time(from a different thread?), the &amp;quot;act:u&amp;quot; service handle is initialized with srv_GetServiceHandle. Then ACTU commands 0x00010084 and 0x000600C2 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| The [[NIM_Services|&amp;quot;nim:u&amp;quot;]] service handle is initialized with srv_GetServiceHandle. Then NIMU commands 0x000F0042, 0x00170042, 0x00150000, and 0x00050000 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AM command 0x10020104(theme DLC) is used here. Then Home Menu CXI RomFS data is read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu CXI RomFS data is read. [[Filesystem_services|FS:GetSpecialContentIndex]] for the gamecard is used, then MICU initialization is done here(separate thread maybe?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[ACU:GetWifiStatus]] is used, the NAND shared-extdata 0xf000000b archive is then opened here.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idb.dat&amp;quot;&lt;br /&gt;
| 0x2008&lt;br /&gt;
| This first opens the file for writing, then uses [[FSFile:GetSize]](output filesize is 0x6d4000). Then it writes to the file using size 0, then closes the file. Then [[PTM_Services|PTM:GetStepHistory]] is used. Then Home Menu opens &amp;quot;/idbt.dat&amp;quot;, then reads 0x2008-bytes.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts using [[News_Services|&amp;quot;news:s&amp;quot;]] commands here. While Home Menu is doing this, it also uses(from another thread?) [[NS_and_APT_Services|APT:PrepareToStartNewestHomeMenu]], [[NIM_Services|NIMU:GetState]], and [[NDM_Services|NDMU:OverrideDefaultDaemons]] with input value 0xF.&lt;br /&gt;
Later with that news-command code still running, Home Menu also uses the following commands: [[ACU:GetWifiStatus]], [[NDM_Services|NDMU:QueryExclusiveMode]], and CECDS command 0x000E0000. Then [[Config_Savegame|cfg]] blkID 0x000D0000 is loaded.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idbt.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu writes 0x2008-bytes to this file.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000e&lt;br /&gt;
| &amp;quot;/versionList.dat&amp;quot;&lt;br /&gt;
| Loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00200082 is used with string &amp;quot;mmVerDl&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| When Home Menu is terminating(?), Home Menu writes 0x2490-bytes to the file here. After doing this, Home Menu opens, writes, and closes the file again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hardware reboot ===&lt;br /&gt;
During Home Menu start-up it uses [[APT:PrepareToStartNewestHomeMenu]]. If that doesn&#039;t return an error(normally NS returns 0xC8A0CFFC for that), Home Menu starts a hardware reboot with [[APT:StartNewestHomeMenu]] etc.&lt;br /&gt;
&lt;br /&gt;
On retail this essentially means a hardware-reboot will automatically trigger if [[Configuration_Memory|configmem]] SYSCOREVER doesn&#039;t match FIRM_SYSCOREVER, or when the current APPMEMTYPE doesn&#039;t match the default APPMEMTYPE for this Old3DS/New3ds model. The latter can happen with running New3DS NATIVE_FIRM with Old3DS system-titles, for example.&lt;br /&gt;
&lt;br /&gt;
== Returning to Home Menu from a crashed application ==&lt;br /&gt;
When returning to Home Menu from an application that didn&#039;t properly shutdown(like with an exception), PTM module writes data to the PTM system savedata. Then the system terminates Home Menu, and starts Home Menu again.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* http://www.nintendo.com/consumer/systems/3ds/en_na/menu_update.jsp&lt;br /&gt;
* http://www.nintendo.co.jp/netinfo/3ds/JPN/ja.html&lt;br /&gt;
* https://yls8.mtheall.com/ninupdates/reports.php&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20752</id>
		<title>Home Menu</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu&amp;diff=20752"/>
		<updated>2018-07-24T08:24:57Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* MngFile.dat */ Add all the different parts of the format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Home Menu&#039;&#039;&#039; is the heart of the Nintendo 3DS. From there one can start games, applications, and access various processes including the friends list. It is launched by [[NS]], and is always running in the background in 3DS-mode except when other programID-high 00040030 applications like Internet Browser, Friend-List, etc are running. Home Menu is still running while [[System Settings]] is running, however the System Settings application does not allow directly returning to home-menu. The system will normally re-launch Home Menu when the Home Menu process crashes/terminates. When this re-launch occurs while Home Menu is active, Home Menu displays an error message which says to manually reboot the system.&lt;br /&gt;
&lt;br /&gt;
== System Versions ==&lt;br /&gt;
Nintendo devised a system, whereby updates would be delivered via two channels: &lt;br /&gt;
*Card Updates (CUP) - The Nintendo 3DS is updated with data from an [[System Update CFA|update partition]] on retail gamecard title. &lt;br /&gt;
*Network Updates (NUP) - The Nintendo 3DS is updated by downloading data from Nintendo&#039;s [[Title list|CDN]].&lt;br /&gt;
&lt;br /&gt;
CUPs will only deliver updates to core features, such as the Home Menu, [[Download Play]] etc. CUPs will not deliver updates to Network features, such as [[System Transfer]], [[Internet Browser]], [[StreetPass Mii Plaza]] or [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
NUPs can deliver updates to core features as well as (updated) Network Features.&lt;br /&gt;
&lt;br /&gt;
As a result of deciding to make a distinction between what content could be updated and how, Nintendo split the system version displayed by [[System Settings]] into two parts: [[CVer]] (Console Version) and [[NVer]] (Network Update Version). Represented as: &lt;br /&gt;
 &amp;lt;CVer Major&amp;gt;.&amp;lt;CVer Minor&amp;gt;.&amp;lt;CVer Micro&amp;gt;-&amp;lt;NUP Version&amp;gt;&amp;lt;NUP Region&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Console Version represents the version of the collectively installed core features. And the NUP Version represents the version of the collectively installed network features.&lt;br /&gt;
&lt;br /&gt;
So if a 3DS&#039; System Firmware read &#039;&#039;&#039;2.1.0-2U&#039;&#039;&#039;, it would indicate a console version of &#039;&#039;&#039;2.1.0&#039;&#039;&#039; and a NUP version of &#039;&#039;&#039;2U&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* CUPs can only update core content, so [[NVer]] is never updated with CUPs.&lt;br /&gt;
* NUPs will not update [[NVer]] if network features are not updated. (Best seen with the USA vs JPN/EUR 6.0.0 NUP)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CUPs are implemented by adding a [[System Update CFA]] to retail NCSD gamecard images. Nintendo generally creates CUPs after NUPs are released.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When updating the system from 4.5.0-6 to 4.5.0-10, the following titles are updated(in the order of title download+install): [[Health and Safety Information]], [[Nintendo 3DS Camera]], [[eShop]], [[System Transfer]], [[Internet Browser]], [[Title_list|0004009B00014102]], [[Title_list|0004009B00014202]], [[Title_list|0004009B00014302]], [[NVer]], and [[FIRM|AGB_FIRM]].&lt;br /&gt;
&lt;br /&gt;
=== System Versions List ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! System version &lt;br /&gt;
! Home Menu title version&lt;br /&gt;
! Release date &lt;br /&gt;
! Changelog &lt;br /&gt;
! System security [[3DS_System_Flaws|flaws]] fixed*&lt;br /&gt;
! Userland security [[3DS_Userland_Flaws|flaws]] fixed*&lt;br /&gt;
! 3DS-mode homebrew affected*&lt;br /&gt;
! CUP Released&lt;br /&gt;
! CDN Availability&lt;br /&gt;
! CDN Post Date&lt;br /&gt;
|-&lt;br /&gt;
| [[1.0.0-0|1.0.0-0]]&lt;br /&gt;
| 0&lt;br /&gt;
| February 26, 2011&lt;br /&gt;
| Shipped with 3DS on launch&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| February 18, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[1.1.0-1|1.1.0-1]] &lt;br /&gt;
| 0 &lt;br /&gt;
| February ?, 2011&lt;br /&gt;
| General bug fixes&lt;br /&gt;
Added 3D Video title to menu. (&amp;quot;For a Limited Time Only&amp;quot;)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| March 1, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.0.0-2|2.0.0-2]]&lt;br /&gt;
| 1029&lt;br /&gt;
| June 6/7, 2011&lt;br /&gt;
| [[eShop]] added, web browser available, [[System Transfer]] added. Full DSiWare data management available. [[Automatic_System_Update_Download|Automatic]] downloading for system updates added. Video stubbed.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 6, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-3|2.1.0-3]]&lt;br /&gt;
| 2049&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
| Fixes the Ridge Racer freeze.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 15, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-4|2.1.0-4]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
| System stability improvements and other adjustments.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 25, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[2.2.0-X|2.2.0]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 6, 2011&lt;br /&gt;
| CUP Only Release. Add &amp;quot;join game&amp;quot; feature to [[Friend List]]. Update from some game cards such as Super Mario 3D Land.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Unavailable&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-5|3.0.0-5]]&lt;br /&gt;
| 4111&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
| Added 3D video recording to the camera title, updated Mii Streetpass Plaza, [[System Transfer]] between 3DS systems available, improved eShop, home menu QR code scanning with QR codes containing URLs. [[Nintendo Zone]] is now always accessible, 3D video streaming support was added to NZone. This added support for running GBA VC titles via AGB_FIRM as well, support for GBA VC titles was also added to NATIVE_FIRM.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 7, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-6|3.0.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
| Only StreetPass Mii Plaza and the [[NVer]] title were updated. From Nintendo&#039;s release notes: &amp;quot;System stability improvements and other adjustments&amp;quot;.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 21, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [[3.1.0-6|3.1.0-6]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown. Sighted preinstalled on some early European 3DS XLs.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Unknown&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [[4.0.0-7|4.0.0-7]]&lt;br /&gt;
| 5131&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
| Add folders to Home Menu, game patching added, buy more expensive games than 1000 yen in JPN. System titles for CHN, TWN, and KOR became available.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.1.0-8|4.1.0-8]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
| From changelog: &amp;quot;improvements to overall system stability and other minor adjustments&amp;quot;. Once updated to [[4.1.0-8]], the parental-controls PIN is no longer required for future system updates.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 14, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.2.0-9|4.2.0-9]]&lt;br /&gt;
| 6146&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
| Improved eShop safety for entering credit-card info, and behind the scenes improvements. Stored CC info will be deleted by this updated eShop, and can be re-entered again.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 26, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.3.0-10|4.3.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
| Updated eShop, bad word list and NZone hotspot list updated.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
| NZone hotspot list updated and TWL_FIRM updated for blocking flash cards.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| September 19, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.4.0-10|4.4.0-10C]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
| China-only, the *only* updated title was [[System Settings]]. This title was updated to a version already available in TWN/KOR.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ?&lt;br /&gt;
| Available&lt;br /&gt;
| October 17, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[4.5.0-10|4.5.0-10]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
| Flash-card block via updated TWL_FIRM and whitelist. NZone hotspot list updated as well.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 4, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [[5.0.0-11|5.0.0-11]]&lt;br /&gt;
| 7172&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
| Many system titles including NATIVE_FIRM were updated, multiple vulnerabilities were fixed as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| March 25, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[5.1.0-11|5.1.0-11]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
| NATIVE_FIRM and NS were updated. According to the official change-log: &amp;quot;Resolves an issue that may prevent access to the System Settings or other features.&amp;quot;&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| April 4, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.0.0-11|6.0.0-12 (-11U)]]&lt;br /&gt;
| 8198&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Users can now back up save data for downloadable versions of Nintendo 3DS software and most Virtual Console games&amp;quot;. For EUR/JPN, the [[StreetPass Mii Plaza]] application and the [[Nintendo 3DS Camera]] application were updated. Other titles for all regions were updated as well.&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 17, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-11|6.1.0-12 (-11U)]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
| Official change-log: &amp;quot;Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| June 27, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-12U]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
| This USA-only update added the updated network features applications which were first released in JPN/EUR with the [[6.0.0-11|6.0.0-12 NUP]] update.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.2.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
| This update added support for the StreetPass relay feature, updated TWL_FIRM, and updated the Nintendo Zone hotspots list.&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| August 6, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.3.0-12]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
| See [[6.3.0-12|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[6.4.0-12]]&lt;br /&gt;
| ?&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
| See [[6.4.0-12|this]](Only for the KOR and TWN regions).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| November 11, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 9230&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
| See [[7.0.0-13|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 9, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-14]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
| See [[7.1.0-14|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| December 19, 2013&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-15]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
| See [[7.1.0-15|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 22, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.1.0-16]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
| See [[7.1.0-16|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[7.2.0-17]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
| See [[7.2.0-17|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| May 12, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
| See [[8.0.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-18]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
| See [[8.1.0-18|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Available&lt;br /&gt;
| July 24, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-19]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
| See [[8.1.0-19|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| August 7, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-0 New3DS]]&lt;br /&gt;
| Not updated&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
| See [[8.1.0-0 New3DS|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 26, 2014&lt;br /&gt;
|-&lt;br /&gt;
| 8.1.0-19&lt;br /&gt;
| Not updated&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
| Japan-only &amp;quot;update&amp;quot;, see [http://yls8.mtheall.com/ninupdates/reports.php?date=10-02-14_02-05-03&amp;amp;sys=ctr here]. The only change was that a new title([[New_3DS]]-only system application) was added, CVer/NVer titles were not even updated. The initial version of this [[Title_list|title]] is a stub.&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 2, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| v11272&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
| See [[9.0.0-20|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (K)&lt;br /&gt;
| Available&lt;br /&gt;
| October 6, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.1.0-20J]]&lt;br /&gt;
| v14336(JPN-region title)&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
| Japan-only, see [[9.1.0-20J|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 10, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.2.0-20]]&lt;br /&gt;
| &lt;br /&gt;
| October 29, 2014&lt;br /&gt;
| See [[9.2.0-20|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 29, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.3.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 8, 2014&lt;br /&gt;
| See [[9.3.0-21|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 8, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.4.0-21]]&lt;br /&gt;
| &lt;br /&gt;
| December 11, 2014&lt;br /&gt;
| See [[9.4.0-21|this]].&lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| December 11, 2014&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-22]]&lt;br /&gt;
| &lt;br /&gt;
| February 2, 2015&lt;br /&gt;
| See [[9.5.0-22|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| February 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-23]]&lt;br /&gt;
| &lt;br /&gt;
| March 2, 2015&lt;br /&gt;
| See [[9.5.0-23|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
| As above&lt;br /&gt;
| Available&lt;br /&gt;
| March 2, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
| &lt;br /&gt;
| March 23, 2015&lt;br /&gt;
| See [[9.6.0-24|this]].&lt;br /&gt;
| See [[9.6.0-24|here]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 23, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.7.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| April 20, 2015&lt;br /&gt;
| See [[9.7.0-25|this]].&lt;br /&gt;
| Probably none?&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| April 20, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.8.0-25]]&lt;br /&gt;
| &lt;br /&gt;
| June 1, 2015&lt;br /&gt;
| See [[9.8.0-25|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| June 1, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| &lt;br /&gt;
| July 13, 2015&lt;br /&gt;
| See [[9.9.0-26|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| July 13, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.0.0-27|10.0.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 8, 2015&lt;br /&gt;
| See [[10.0.0-27|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 8, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.1.0-27|10.1.0-27]]&lt;br /&gt;
| &lt;br /&gt;
| September 14, 2015&lt;br /&gt;
| See [[10.1.0-27|this]].&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (J/U/E/K)&lt;br /&gt;
| Available&lt;br /&gt;
| September 14, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.2.0-28|10.2.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| October 19, 2015&lt;br /&gt;
| See [[10.2.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| October 19, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.3.0-28|10.3.0-28]]&lt;br /&gt;
| &lt;br /&gt;
| November 9, 2015&lt;br /&gt;
| See [[10.3.0-28|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| November 9, 2015&lt;br /&gt;
|-&lt;br /&gt;
| [[10.4.0-29|10.4.0-29]]&lt;br /&gt;
| &lt;br /&gt;
| January 18, 2016&lt;br /&gt;
| See [[10.4.0-29|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Launching old Ironfall was blocked.&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| January 18, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.5.0-30|10.5.0-30]]&lt;br /&gt;
| &lt;br /&gt;
| January 25, 2016&lt;br /&gt;
| See [[10.5.0-30|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| January 25, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.6.0-31|10.6.0-31]]&lt;br /&gt;
| &lt;br /&gt;
| February 22, 2016&lt;br /&gt;
| See [[10.6.0-31|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U)&lt;br /&gt;
| Available&lt;br /&gt;
| February 22, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| March 14, 2016&lt;br /&gt;
| See [[10.7.0-32|this]].&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| March 14, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.0.0-33|11.0.0-33]]&lt;br /&gt;
| &lt;br /&gt;
| May 9, 2016&lt;br /&gt;
| See [[11.0.0-33|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| May 9, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.1.0-34|11.1.0-34]]&lt;br /&gt;
| &lt;br /&gt;
| September 13, 2016&lt;br /&gt;
| See [[11.1.0-34|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes (J/U/E)&lt;br /&gt;
| Available&lt;br /&gt;
| September 13, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.2.0-35|11.2.0-35]]&lt;br /&gt;
| &lt;br /&gt;
| October 24, 2016&lt;br /&gt;
| See [[11.2.0-35|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| October 24, 2016&lt;br /&gt;
|-&lt;br /&gt;
| [[11.3.0-36|11.3.0-36]]&lt;br /&gt;
| &lt;br /&gt;
| February 6, 2017&lt;br /&gt;
| See [[11.3.0-36|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| February 6, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.4.0-37|11.4.0-37]]&lt;br /&gt;
| &lt;br /&gt;
| April 10, 2017&lt;br /&gt;
| See [[11.4.0-37|this]].&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| April 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.5.0-38|11.5.0-38]]&lt;br /&gt;
| &lt;br /&gt;
| July 10, 2017&lt;br /&gt;
| See [[11.5.0-38|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| July 10, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.6.0-39|11.6.0-39]]&lt;br /&gt;
| &lt;br /&gt;
| September 18, 2017&lt;br /&gt;
| See [[11.6.0-39|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| September 18, 2017&lt;br /&gt;
|-&lt;br /&gt;
| [[11.7.0-40|11.7.0-40]]&lt;br /&gt;
| &lt;br /&gt;
| June 18, 2018&lt;br /&gt;
| See [[11.7.0-40|this]].&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| Available&lt;br /&gt;
| June 18, 2018&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot;: This includes known flaws, and any fixed flaws discovered via code bin-diff.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[3DS_System_Flaws|System]]/[[3DS_Userland_Flaws|Userland]] security flaws fixed*&amp;quot; and &amp;quot;3DS-mode homebrew affected&amp;quot; only apply to the changes done with that specific system-update(&amp;quot;affected&amp;quot; does not include hax codebases breaking *just* due to updated codebins).&lt;br /&gt;
&lt;br /&gt;
[[Category:Nintendo Software]]&lt;br /&gt;
&lt;br /&gt;
== Auto-Boot Function ==&lt;br /&gt;
When the Home Menu is initially loaded by [[NS]], it checks the gamecard ExeFS:/[[SMDH|icon]] for the auto-boot flag. If the auto-boot flag is set, it will load the application on the cartridge and the home menu will not remain running in the background, or at least not in an operational state. Using software cues to return to the home menu, or sleep menu while in this state, causes a shutdown.&lt;br /&gt;
&lt;br /&gt;
Notable features of demo titles:&lt;br /&gt;
*Auto-boot demos generally disable the functionality of the home button.&lt;br /&gt;
*The &#039;&#039;New Super Mario Bros 2&#039;&#039; demo, retained the functionality of the home button, and had an timer which triggered the demo to quit after a period of inactivity.&lt;br /&gt;
&lt;br /&gt;
Auto-boot cartridges, can bypass some of the functions of the Home Menu. Auto Booted software:&lt;br /&gt;
* Doesn&#039;t show usage history in the [[Activity Log]]&lt;br /&gt;
* Bypasses Parental controls&lt;br /&gt;
* Bypasses Forced Game Card Updates&lt;br /&gt;
* Bypasses Initial 3DS Setup&lt;br /&gt;
* The console does not have a friends list presence.&lt;br /&gt;
* Is still subject to region lock(see below).&lt;br /&gt;
&lt;br /&gt;
Region lock is still active, so the home menu will refuse to launch demos with incorrect region lock will not load, displaying &amp;quot;An Error has Occurred&amp;quot;. However, game card update partition checks are not done, which allows launching demos that have region free encoding, but have an alternate(or even invalid) region update partition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following auto-boot paths can be used by Home Menu, checked in the same order listed below(the above gamecard auto-boot is checked before this):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and X&lt;br /&gt;
| This launches [[System Settings]] for touchscreen calibration.&lt;br /&gt;
|-&lt;br /&gt;
| R, L, and Y&lt;br /&gt;
| This launches [[System Settings]] for circlepad calibration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is only checked when the low u16 from [[Config_Savegame|config]] block 0x00110000 is value zero(normally this is non-zero). Thus, the below is only handled when a system setup is required.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key-combo / requirements for this path&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| R, X, Y, A, and B, a 3DS gamecard must be inserted as well.&lt;br /&gt;
| This launches the gamecard application. Note that pressing the HOME button in the gamecard application launched this way will only result in the system shutting down.&lt;br /&gt;
|-&lt;br /&gt;
| This is used when the above path isn&#039;t used.&lt;br /&gt;
| This launches System Settings for the system setup.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Region Lockout ==&lt;br /&gt;
&lt;br /&gt;
One of the Home Menu&#039;s functions, is to regulate region lockout. The region lockout data for any given title is held in the [[SMDH#BNR Region|ICN data]]. There are 6 regions of which have their own region lockout, Japan, USA, Europe(including Nintendo Australia), China, Taiwan and Korea. There is also a value which makes a title exempt from region lockout, and consequently accessible from any region of 3DS.&lt;br /&gt;
&lt;br /&gt;
The region-field stored in the [[SMDH|ICN-data]] is only checked when Home Menu itself launches a title, not when other titles use NS to have Home Menu launch titles. This isn&#039;t actually useful for gamecard region-free however, due to the gamecard system-updates, see below.&lt;br /&gt;
&lt;br /&gt;
Also note that while some gamecard games are mostly region-free(main CXI is identical for all regions of the gamecard), those gamecards can&#039;t actually be launched with all 3DS regions due to the gamecard system-update, see below. Note that the main CXI being identical for all regions of a gamecard also means the savedata keyY is identical for all regions of that gamecard too(except for old system-version &amp;lt;v2.2 games, in some cases, due to different cardIDs).&lt;br /&gt;
&lt;br /&gt;
=== Effects of Region Lockout  ===&lt;br /&gt;
Every 3DS title regardless of location (NAND/SD Card/Game Card) is subject to region lockout scrutiny by the Home Menu. And the home menu treats &#039;out-of-region&#039; titles by simply refusing to show them on the home menu. No messages are shown on the home menu to notify the user, the title is simply ignored. However out-of-region SD Card titles, will appear and quickly disappear, while all the SD Titles are being processed. In cases where access to the home menu GUI is not needed to launch the title (like in the case of kiosk demos), the home menu states an error has occurred, and launching of the title is stopped.&lt;br /&gt;
&lt;br /&gt;
=== Game Card Updates ===&lt;br /&gt;
Either intentionally a region lock mechanism or not, the function which checks the game card update partition returns an error when it is detected the update is for a region other than the 3DS&#039;s region (Most likely triggered by the absence of the correct CVer title). And errors returned from checking the update partition, will result in the home menu displaying &amp;quot;This Game Card cannnot be used&amp;quot;, when the user attempts to launch the title.&lt;br /&gt;
&lt;br /&gt;
== Home-menu [[SpotPass]] usage ==&lt;br /&gt;
&lt;br /&gt;
Home-menu originally used two domains with HTTPS for SpotPass. SpotPass stores this content in Home-menu&#039;s NAND shared extdata.&lt;br /&gt;
&lt;br /&gt;
* The system notifications are downloaded from: &amp;lt;nowiki&amp;gt;https://a248.e.akamai.net/f/248/103046/10m/npdl.c.app.nintendowifi.net/p01/nsa/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;/&amp;lt;langcode&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; Where langcode is the two-character language codes from [[Config Savegame#Languages|config]], and regionID is from the below table. &amp;lt;filename&amp;gt; is bashoX/sysmsgX where X is 0-3.&lt;br /&gt;
* https://pls.c.shop.nintendowifi.net/pl/upload This URL is used for uploading data from the home menu NAND shared extdata, it&#039;s unknown what this is used for. This data is uploaded every 24 hours.&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;https://npul.c.app.nintendowifi.net/p01/recv/&amp;lt;regionID&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/nowiki&amp;gt; This is used for uploading unknown data from extdata. &amp;lt;filename&amp;gt; can be one of the following:&lt;br /&gt;
** &amp;quot;phu&amp;quot;&lt;br /&gt;
** &amp;quot;tiu&amp;quot; The POST data contains a list of [[BOSS_Services|BOSS]] taskIDs etc. This seems to be only for Nintendo titles?(system+eShop apps)&lt;br /&gt;
** &amp;quot;splu&amp;quot;&lt;br /&gt;
** &amp;quot;sendmgn&amp;quot; For this it appears SpotPass does a HTTP POST with data originally from Launcher.dat?&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Region&lt;br /&gt;
! ID&lt;br /&gt;
|-&lt;br /&gt;
| JPN&lt;br /&gt;
| gWr4JXxb2mKTG3lq&lt;br /&gt;
|-&lt;br /&gt;
| NA&lt;br /&gt;
| uuI82221UKkqmtbp&lt;br /&gt;
|-&lt;br /&gt;
| EUR / Others&lt;br /&gt;
| UrXSeurnxhPrq7AS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SpotPass content payload for notifications begin with a header, followed by an [[SMDH|icon]] and the UTF-16 text, and various metadata.&lt;br /&gt;
&lt;br /&gt;
=== VersionList ===&lt;br /&gt;
During startup, Home Menu loads &amp;quot;/versionList.dat&amp;quot; from NAND extdata 0xf000000e. This is downloaded via SpotPass, the file-data downloaded via HTTPS here is raw (no SpotPass container):&lt;br /&gt;
* Retail: [https://tagaya-ctr.cdn.nintendo.net/tagaya/versionlist]&lt;br /&gt;
* Dev-unit: [https://tagaya-dev-ctr.cdn.nintendo.net/tagaya/versionlist] The titles listed in this are not available on the [[Title list|normal]] CDN.&lt;br /&gt;
&lt;br /&gt;
This is a list of title-updates available on the eShop, for regular app titles and update-titles. This is what Home Menu checks to determine whether the currently selected application needs to be updated or not. When an Internet connection is not available or wifi is disabled, Home Menu will skip VersionList handling/messages when you launch applications.&lt;br /&gt;
&lt;br /&gt;
File structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| The first u32 is normally 0x1, the rest is normally all-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| &amp;lt;Filesize-0x10&amp;gt;&lt;br /&gt;
| Title entries, 0x10-bytes each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Title entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 TitleID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 titleversion&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown u32, usually zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== [[BOSS_Services|BOSS]] usage notes ===&lt;br /&gt;
Home Menu uses 4 hard-coded NsDataIds: 0x1, 0x2, 0x3, and 0x4, under a loop in the same function for writing to &amp;quot;bashotorya.dat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Automatic System Update Download ==&lt;br /&gt;
See [[Automatic System Update Download]].&lt;br /&gt;
&lt;br /&gt;
== Home Menu Error Messages ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dialog Text&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;An error has occured. Please save your data ... then restart the system&amp;quot;&lt;br /&gt;
| This dialog is displayed when a system applet(including Home Menu) crashes/terminates. This dialog is also displayed for system errors as well.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Home Menu Themes ==&lt;br /&gt;
See [[Home_Menu/Themes|here]].&lt;br /&gt;
&lt;br /&gt;
As of [[11.0.0-33]] Home Menu themes are only supported with USA, EUR, and JPN. CHN Home Menu was last updated with v7.0, and TWN doesn&#039;t even have a Home Menu settings menu(just the old screen brightness config menu + an [[amiibo Settings]] icon on the right side of the browser icon).&lt;br /&gt;
&lt;br /&gt;
KOR Home Menu doesn&#039;t have the theme-settings menu button. While this does have the theme handling code, it isn&#039;t actually usable since extdataID 0x0 is used for theme-extdata for non-&amp;lt;JPN/USA/EUR&amp;gt; regions(which is invalid).&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[System_SaveData|NAND]] savedata ==&lt;br /&gt;
=== Launcher.dat ===&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;
| Launcher.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| Unknown, normally 0x1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of titleIDs. For an unused entry, the u64 value is ~0(in that case, the corresponding entries at 0xD9A/0x106A for this titleID are not used either). This is used for the icons displayed on the main Home Menu screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9A&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| Array of 360 s16 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position, 0x0 for the very first icon, 0x1 for the next one and so on. This is completely linear, no X/Y coordinates. Implemented with the format-version for [[4.0.0-7|4.0.0-X]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x106A&lt;br /&gt;
| 0x168&lt;br /&gt;
| Array of 360 s8 fields, each one corresponds to the titleIDs at the array located at offset 0x8. This is used for icon position. When an s8 here is -1(which is the normal value), the icon is located with the first chunk of icons(outbuf+0), otherwise the base address is outbuf+0xB40+&amp;lt;s8val*0x1E0&amp;gt;(which is equivalent to 60 icons * s8val). Implemented with the format-version for [[4.0.0-7|4.0.0-X]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SD ExtData ==&lt;br /&gt;
The SD ExtData [[Extdata#Filesystem|File System]] for Home Menu introduced with [[2.0.0-2|2.0.0-X]] is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── SaveData.dat&lt;br /&gt;
     ├── Cache.dat&lt;br /&gt;
     └── CacheD.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
|  icon&lt;br /&gt;
|  Stubbed. Always image 00000002.&lt;br /&gt;
|  0x4 Bytes&lt;br /&gt;
|  n/a&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  SaveData.dat&lt;br /&gt;
|  Always image 00000003.&lt;br /&gt;
|  0x2cb0 Bytes (0x2da0 starting with [[4.0.0-7]])&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/SaveData.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  Cache.dat&lt;br /&gt;
|  Indexes and records details for the cached icon data. Always image 00000004.&lt;br /&gt;
|  0x1688 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/Cache.dat Download]&lt;br /&gt;
|-&lt;br /&gt;
|  CacheD.dat&lt;br /&gt;
|  Cached icon data for Home Menu. Always image 00000005.&lt;br /&gt;
|  0x4cfe00 Bytes&lt;br /&gt;
|  [[2.0.0-2]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/HomeMenuExtdata/CacheD.dat Download]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cache.dat &amp;amp; CacheD.dat ===&lt;br /&gt;
These two files work in tandem to allow the home menu to cache icon data for applications which are presented on the Home Menu. The size of both files suggests a maximum cache size of 360 icons. Cache.dat stores details about the cache icon data, and CacheD.dat stores the icon data. The icon cache stores icon data for *all* applications shown on the Home Menu, this includes DSi NAND Titles, and DS(i) cartridges. The format of cached DS(i) icon data is not understood, but they are the same size as 3DS icon data (0x36c0).&lt;br /&gt;
&lt;br /&gt;
In Cache.dat the first 8 bytes are a header where the first byte is the format-version, then follows each icon slots&#039;s entry in the format:&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;
|  8&lt;br /&gt;
|  Title ID in Little Endian&lt;br /&gt;
|-&lt;br /&gt;
|  0x8&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|-&lt;br /&gt;
|  0xc&lt;br /&gt;
|  4&lt;br /&gt;
|  Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All unused entries have the Title IDs filled with &amp;quot;0xff&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In CacheD.dat, the icon data is concatenated together, with the first icon at offset 0x0.&lt;br /&gt;
&lt;br /&gt;
=== SaveData.dat ===&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;
| SaveData.dat format version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xB40&lt;br /&gt;
| 360 u64s, list of titleIDs(used with icons). Equivalent to the same array in Launcher.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB48&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 bool array with 360 entries. Some SD-only icon array. Probably an array for each icon present status? Each entry is only known to be set to 0x00 or 0x01, with the former being the default.&lt;br /&gt;
|-&lt;br /&gt;
| 0xCB0&lt;br /&gt;
| 0x2D0&lt;br /&gt;
| s16 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF80&lt;br /&gt;
| 0x168&lt;br /&gt;
| s8 array with 360 entries, used with icons. Equivalent to the same array in Launcher.dat. Implemented with format-version 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13b8&lt;br /&gt;
| 0x8&lt;br /&gt;
| Theme entry structure for the regular theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13c0&lt;br /&gt;
| 0x8*10(0x50)&lt;br /&gt;
| Array of theme entry structures for theme [[9.3.0-21|shuffling]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x141b&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = one regular theme, 1 = multiple themes for theme [[9.3.0-21|shuffle]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The icon arrays above are handled exactly the same way as Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
When the theme cache is enabled via the above fields, Home Menu loads the cache at startup(if the used theme structure is valid).&lt;br /&gt;
&lt;br /&gt;
Theme entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Theme index: for DLC this is the content-index, for built-in themes this is an index for an array selecting the built-in theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero. This is the low 8-bits in the DLC titleID that this theme was originally loaded from.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| Theme type, the valid range is 0..5. 0 = none, 1 = built-in theme from Home Menu RomFS, 2 = theme data loaded from SD cache / content archive. 3 = ?, 4 = ?, 5 = ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 0x1&lt;br /&gt;
| Normally zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When the theme-type is value1 the themeindex must be &amp;lt;9. When the theme-type is value2 the themeindex has to be non-zero, and the u8 at offset 0x4 must not be &amp;gt;=10.&lt;br /&gt;
&lt;br /&gt;
The theme-loader code (besides the AM &amp;lt;is-current-themeindex-DLC-installed&amp;gt; code) handles all theme-types &amp;gt;=2 the same way. However, it seems all DLC AM code involving checking the currently-used theme DLC only gets executed when the theme-type is value2. The code in the theme-loader for that also checks that a certain Home Menu state flag is non-zero, before running the AM DLC code(it&#039;s unknown where this flag value comes from).&lt;br /&gt;
&lt;br /&gt;
==== SaveData.dat format versions ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Version value&lt;br /&gt;
!  Filesize&lt;br /&gt;
!  Implemented with Home Menu system-version&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0x2CB0&lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.0.0-20|9.0.0-X]]&lt;br /&gt;
|-&lt;br /&gt;
| 4 (Latest version as of v10.6-v11.0 Home Menu)&lt;br /&gt;
| 0x2DA0&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Home Menu code for writing the updated SaveData.dat to FS is broken when the filesize is smaller than expected due to being from an older format-version originally. When writing to the file, Home Menu checks the filesize then attempts to use [[FSFile:SetSize]] on mismatch, but [[FSFile:SetSize]] can&#039;t be used with extdata(error from [[FSFile:SetSize]] appears to be ignored). When writing to SaveData.dat the write-size is the one for the current format-version, but since extdata files are fixed-size this will only result in the first {original filesize} bytes being written(result-code = 0xE0E046C1).&lt;br /&gt;
&lt;br /&gt;
Basically, unless the extdata is deleted from the SD card FS manually, the SaveData.dat filesize will never be successfully updated from an old filesize to the current-format filesize by Home Menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu [[Home_Menu/Themes|Theme]] SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── ThemeManage.bin&lt;br /&gt;
     ├── BodyCache.bin&lt;br /&gt;
     ├── BgmCache.bin&lt;br /&gt;
     └── nsalist&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| ThemeManage.bin&lt;br /&gt;
| Theme management info. The filesize must match 0x800, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x800&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BodyCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS body_LZ.bin file. The filesize must match 0x150000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x150000&lt;br /&gt;
| 00000004&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| BgmCache.bin&lt;br /&gt;
| Contains cached data from the last loaded [[Home_Menu/Themes|theme]] RomFS bgm.bcstm file. The filesize must match 0x337000, otherwise the Home Menu code returns an error.&lt;br /&gt;
| 0x337000&lt;br /&gt;
| 00000005&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| nsalist&lt;br /&gt;
| Contains the list of DLC themes(IDs+prices), downloaded via [[SpotPass]].&lt;br /&gt;
| &lt;br /&gt;
| 00000007&lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin contain cached theme data for the currently used DLC theme. ThemeManage.bin is loaded by Home Menu during startup. The cached theme data is loaded at startup when a DLC theme is selected. This also contains theme-shop [[SpotPass]] data.&lt;br /&gt;
&lt;br /&gt;
BodyCache.bin and BgmCache.bin are all-zero when no theme is selected.&lt;br /&gt;
&lt;br /&gt;
Starting with [[9.3.0-21|9.3.0-X]] Home Menu can use more files in this extdata, for theme shuffling. &amp;quot;theme:/ThemeManage.bin&amp;quot; &amp;quot;theme:/BgmCache_%02d.bin&amp;quot; &amp;quot;theme:/BodyCache_rd.bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ThemeManage.bin ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally value 0x1?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, normally zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached body_LZ.bin data.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Actual size of the cached bgm.bcstm data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| When a DLC theme is selected, this is the content-index of the DLC theme.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown, usually value 0x200 when the data in theme-cache is actually used?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total filesize is 0x800-bytes, normally the data starting at offset 0x1C is all-zero.&lt;br /&gt;
&lt;br /&gt;
When no theme is actually used,  the only non-zero fields are the following: the u32 stored at offset 0x0 in ThemeManage.bin is value 0x1, with offset 0x10 u32 set to value 0x1.&lt;br /&gt;
&lt;br /&gt;
== Home Menu badge SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     ├── BadgeData.dat&lt;br /&gt;
     └── BadgeMngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
|-&lt;br /&gt;
| BadgeData.dat&lt;br /&gt;
| [[Home_Menu#BadgeData.dat|See below.]]&lt;br /&gt;
| 0xF4DF80&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|-&lt;br /&gt;
| BadgeMngFile.dat&lt;br /&gt;
| [[Home_Menu#BadgeMngFile.dat|See below.]]&lt;br /&gt;
| 0xD4A8&lt;br /&gt;
| &lt;br /&gt;
| [[9.0.0-20]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeData.dat ===&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;
| 100 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Set Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x35E80&lt;br /&gt;
| 1000 * 16 * 0x8A&lt;br /&gt;
| UTF-16 Badge Titles (16 per set for different languages)&lt;br /&gt;
|-&lt;br /&gt;
| 0x250F80&lt;br /&gt;
| 100 * 0x2000&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 Badge Set Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0x318F80&lt;br /&gt;
| 1000 * 0x2800&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 64x64 + Tiled A4 64x64 Badge Icons&lt;br /&gt;
|-&lt;br /&gt;
| 0xCDCF80&lt;br /&gt;
| 1000 * 0xA00&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Z-order_curve Tiled] RGB565 32x32 + Tiled A4 32x32 Badge Icons&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BadgeMngFile.dat ===&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;
| u32, Must Be Zero&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Badge Sets&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Placed Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Set in Home Menu (0xFFFFFFFF = All Badges)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Selected Badge Column in All Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Nintendo Network ID Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x338&lt;br /&gt;
| Unknown (always zeros? unused?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x358&lt;br /&gt;
| 0x80&lt;br /&gt;
| Used Badge Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D8&lt;br /&gt;
| 0x10&lt;br /&gt;
| Used Badge Set Slots (each bit = 1 slot)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E8&lt;br /&gt;
| 1000 * 0x28&lt;br /&gt;
| [[Home_Menu#BadgeInfo|BadgeInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xA028&lt;br /&gt;
| 100 * 0x30&lt;br /&gt;
| [[Home_Menu#BadgeSetInfo|BadgeSetInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2E8&lt;br /&gt;
| 360 * 0x18&lt;br /&gt;
| [[Home_Menu#BadgeLayoutSlot|BadgeLayoutSlot]] Entries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeIdentifier ====&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;
| u32, Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Badge Sub ID (used for multi-part badges)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetIdentifier ====&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;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (Usually 0x2710)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Badge Set Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeInfo ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Number Placed&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16, Quantity&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (packed data?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x10&lt;br /&gt;
| u64[2], Shortcut Title ID (twice, once per u64)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeSetInfo ====&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;
| 0x18&lt;br /&gt;
| [[Home_Menu#BadgeSetIdentifier|BadgeSetIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0xFFFFFFFF)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Unique Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Number of Total Badges&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Start Badge Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Unknown (usually 0x0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== BadgeLayoutSlot ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32, Folder (0xF0FF = Icon of a folder, 0xFFFFFFFF = No folder)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file size must match 0xD4A8, otherwise the Home Menu code returns an error.&lt;br /&gt;
&lt;br /&gt;
== Home Menu theme layout SD [[Extdata|ExtData]] ==&lt;br /&gt;
The filesystem for this extdata(when it actually exists) is as follows:&lt;br /&gt;
&lt;br /&gt;
 root&lt;br /&gt;
 ├── icon&lt;br /&gt;
 ├── boss&lt;br /&gt;
 └── user&lt;br /&gt;
     └── MngFile.dat&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  File&lt;br /&gt;
!  Details&lt;br /&gt;
!  Size&lt;br /&gt;
!  Extdata image ID&lt;br /&gt;
!  FW Introduced&lt;br /&gt;
!  Plaintext&lt;br /&gt;
|-&lt;br /&gt;
| MngFile.dat&lt;br /&gt;
| See below.&lt;br /&gt;
| 0x004D1280&lt;br /&gt;
| 00000003&lt;br /&gt;
| [[9.6.0-24]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MngFile.dat ===&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;
| u32, must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| array of 8 u8, 0 if the corresponding layout slot is not set, 1 if it is&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x3000 * 8&lt;br /&gt;
| Start of the layout entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1800C&lt;br /&gt;
| 0xC&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x18010&lt;br /&gt;
| 0x2DA0 * 8&lt;br /&gt;
| Start of the [[Home_Menu#SaveData.dat|SaveData.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2ED10&lt;br /&gt;
| 0xD4A8 * 8&lt;br /&gt;
| Start of the [[Home_Menu#BadgeMngFile.dat|BadgeMngFile.dat]] entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x99250&lt;br /&gt;
| 0x30&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x99280&lt;br /&gt;
| 256*3*8 * 400/8 * 8&lt;br /&gt;
| Start of the top screen (400x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F1280&lt;br /&gt;
| 256*3*8 * 320/8 * 8&lt;br /&gt;
| Start of the top screen (320x240) screenshots, in BGR8 tiled format, rotated 90 degrees and with 8 rows per &amp;quot;chunk&amp;quot;, and actually 256 pixels wide instead of 240, with the last 16 being all black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Layout entries 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;
| 0x2558&lt;br /&gt;
| Exact copy of the entire Home Menu [[System_SaveData]] [[Home_Menu#Launcher.dat|Launcher.dat]], this is the actual layout data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2558&lt;br /&gt;
| 0xAA8&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize must match 0x004D1280, otherwise the Home Menu code returns an error. The saved Home Menu layouts are stored here.&lt;br /&gt;
&lt;br /&gt;
When saving a layout, the total layout field is increased, then a new layout entry is created with the contents of the current Home Menu [[System_SaveData]](NAND savedata) Launcher.dat + a screenshot of the main Home Menu screen is written. When loading a layout, Launcher.dat in savedata is written with the current Launcher.dat data already stored in memory(unknown if any data gets changed for it here), then data from the layout entry is copied into the Home Menu [[System_SaveData]] Launcher.dat.&lt;br /&gt;
&lt;br /&gt;
Home Menu *only* accesses this file with the Home Menu layout-settings menu / when entering that menu.&lt;br /&gt;
&lt;br /&gt;
== Home Menu startup ==&lt;br /&gt;
The following is what Home Menu does at startup(converted from cmd-logs), from [[9.4.0-21]], in the same order Home Menu does it.&lt;br /&gt;
&lt;br /&gt;
Originally Home Menu mounted sdmc in main(), starting(?) with [[6.0.0-11]] Home Menu only has sdmc mounted while handling [[SD_Savedata_Backups]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Archive&lt;br /&gt;
!  Filename&lt;br /&gt;
!  Read size&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_init(), then srv_GetServiceHandle is used to initialize the service handles for the following services: [[NS_and_APT_Services|ns:s]], [[PTM_Services|ptm:sysm]], and [[Config_Services|cfg:s]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[CfgS:SecureInfoGetByte101]] and [[CfgS:GetLocalFriendCodeSeed]] are used, the output data from these are not used. If either of these return an error, Home Menu uses [[ERR:Throw]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Cfg:GetSystemModel]] is then used to initialize a Home Menu state field.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then loads the system language via [[CfgS:GetConfigInfoBlk2]], and uses [[Cfg:SecureInfoGetRegion]], to initialize Home Menu region/language state. Home Menu then uses [[Cfg:SecureInfoGetRegion]] again, then loads the [[Config_Savegame|CountryInfo]] via [[CfgS:GetConfigInfoBlk2]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu initializes [[Filesystem_services|fs:USER]] here. Home Menu then mounts the Home Menu CXI RomFS. Then Home Menu uses [[Filesystem_services|FSUSER:GetPriority]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts APT initialization / using APT service commands here. Eventually Home Menu then [[NSS:LaunchTitle|launches]] various system-modules.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu attempts to open NAND shared-[[extdata]] 0xe0000000, which will normally fail since it doesn&#039;t exist.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[Application_Manager_Services|AM]] command 0x00130040, with input u8 = value 0x0. Home Menu continues using APT commands after this.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[HID_Services|hid:SPVR]] service initialization is done here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTMSYSM:GetShellStatus]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read to check the auto-boot flag(see the auto-boot section on this page). The system-setup-required flag is then read here if needed, as mentioned under the auto-boot section of this page.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu then uses cfg commands to load system language, region, and CountryInfo.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/menu_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/hud_msbt_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/message_hud/&amp;lt;Region&amp;gt;_&amp;lt;Language&amp;gt;/RI_mstl_LZ.bin&amp;quot;&lt;br /&gt;
| Presumably loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[NS_and_APT_Services|APT:GetSharedFont]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &amp;quot;/font/Hud_JP.bcfnt&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Here Home Menu loads the [[Config_Savegame|cfg]] state for blkID 0x50005.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu loads the GPU shaders from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does DSP initialization then starts using DSP commands etc + loads sound data from RomFS.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu does GSP initialization.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[APT:GetCaptureInfo]] is used here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]], [[PTMSYSM:GetSoftwareClosedFlag]], and [[PTMSYSM:ClearSoftwareClosedFlag]]. Home Menu then uses [[PTM_Services|PTMSYSM:GetShellStatus]] 3 times in a row. Starting from here, Home Menu uses [[PTM_Services|PTMSYSM:GetShellStatus]] frequently(presumably from a separate thread).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the archive for the Home Menu [[System_SaveData]] here. Then Home Menu attempts to open &amp;quot;/Launcher.dat&amp;quot; for reading, when successful Home Menu just closes the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| 0x2490&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| System CFA, titleID for USA: 0004009B00013302&lt;br /&gt;
| &amp;quot;/country.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[NS CFA]]&lt;br /&gt;
| &amp;quot;/ctr_backup_black_list&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu first reads 0x10-bytes from offset 0x0, then after that it reads the rest of the file.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] the camera system-module here.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu CXI RomFS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu reads various RomFS files here.&lt;br /&gt;
|-&lt;br /&gt;
| NGWord bad word list CFA&lt;br /&gt;
| &amp;quot;/version.dat&amp;quot;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Home Menu mounts the ngword archive here, then reads version.dat. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000A0000.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu [[NSS:LaunchTitle|launches]] various system-modules here(from a separate thread?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens the following NAND shared extdata archives here: 0xf0000001, 0xf0000002, 0xf0000009, 0xf000000b, 0xf000000c, 0xf000000d, and 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000b&lt;br /&gt;
| &amp;quot;/ubll.lst&amp;quot;&lt;br /&gt;
| 0x2ee0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_DB.dat&amp;quot;&lt;br /&gt;
| 0xe4c0&lt;br /&gt;
| Home Menu only does one read with size 0xe4c0 for this, even though the value it loads from [[FSFile:GetSize]] is larger than that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/CFL_OldDB.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu just closes this file immediately after opening it, when opening it was successful at least.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the [[Config_Savegame|cfg]] data for blkID 0x000C0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu opens NAND shared extdata archive 0xf000000b again.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| [[Extdata|&amp;quot;/gamecoin.dat&amp;quot;]]&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use [[FS:CreateFile]] with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM:GetTotalStepCount]], then uses [[FSFile:GetSize]]. Then the service handle for [[NDM_Services|&amp;quot;ndm:u&amp;quot;]] is initialized with srv_GetServiceHandle(done from a separate thread perhaps?). Then Home Menu writes to the already opened gamecoin.dat file.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Filesystem_services|FSUSER:CardSlotIsInserted]] and [[Filesystem_services|FSUSER:GetCardType]] is used here. AM commands are then used to get the inserted gamecard programID, when successful the gamecard ExeFS:/icon is then read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[BOSS_Services|&amp;quot;boss:P&amp;quot;]] service handle initialization with srv_GetServiceHandle is done here. Then [[Services|srv_Subscribe]] is used with various noticationIDs. Home Menu then uses [[FS:IsSdmcDetected]] and [[FS:IsSdmcWritable]]. Home Menu then loads the [[Config_Savegame|cfg]] data for blkID 0x000D0000. Home Menu uses boss:P command 0x4010082, then uses srv_GetServiceHandle for initializing service handles with the following services: [[News_Services|&amp;quot;news:s&amp;quot;]] and &amp;quot;cecd:s&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for service [[Friend_Services|&amp;quot;frd:a&amp;quot;]], then various service commands are used for that.&lt;br /&gt;
|-&lt;br /&gt;
| NAND [[extdata]] 0xf000000c&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu first attempts to use [[FS:CreateFile]] with &amp;quot;/bashotorya.dat&amp;quot;, which normally fails since that file already exists. Home Menu then repeats this with &amp;quot;/bashotorya2.dat&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Here, Home Menu opens the following SD extdata archives: Home Menu badge SD extdata, Home Menu SD extdata, and the theme-cache SD extdata.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/SaveData.dat&amp;quot;&lt;br /&gt;
| 0x2da0&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/Cache.dat&amp;quot;&lt;br /&gt;
| 0x1688&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu SD extdata&lt;br /&gt;
| &amp;quot;/CacheD.dat&amp;quot;&lt;br /&gt;
| 0x36c0&lt;br /&gt;
| This is used to read the cached icon data for the currently inserted gamecard, if any. Prior to doing the read, Home Menu uses [[FSFile:GetSize]]. After opening the file and before [[FSFile:GetSize]] is used, Home Menu uses AM commands 0x10070102(for theme DLC) and 0x30084(gamecard &amp;quot;title-listing&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu uses the following AM commands for theme DLC here: 0x10050084 and 0x10020104.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BodyCache.bin&amp;quot;&lt;br /&gt;
| 0x150000&lt;br /&gt;
| Before opening the file, Home Menu firsts opens this archive under a new archive-handle again, then closes it. Prior to doing the read, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/ThemeManage.bin&amp;quot;&lt;br /&gt;
| 0x8&lt;br /&gt;
| Prior to doing the read, Home Menu uses [[FSFile:GetSize]](the result is filesize 0x800).&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu Theme SD extdata&lt;br /&gt;
| &amp;quot;/BgmCache.bin&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| The data is read from here as needed. After opening the file, Home Menu uses [[FSFile:GetSize]].&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P commands 0x00040000 and 0x04040080 are used here. Home Menu opens NAND shared-extdata 0xf000000e, then closes it when the archive was opened successfully. Then Home Menu uses boss:P command 0x04500102 with the theme extdata, with string &amp;quot;thmtop&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x04040080 is used, with the input programID set to the gamecard one. Then boss:P commands 0x000E0000 and 0x00160082 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=SD and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00160082 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[PTM_Services|PTM:GetStepHistory]] is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| srv_GetServiceHandle is used to initialize the service handle for [[AC_Services|&amp;quot;ac:u&amp;quot;]], then [[AC_Services|ACU:SetClientVersion]] is used. [[Services|srv_Subscribe]] is used, then ACU command 0x002F0004 is used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AMNet:GetTitleIDList|AM:GetTitleIDList]] is used with mediatype=NAND and maxTIDs = 0x1c00.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/gamecoin.dat&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| Home Menu first tries to use FS:CreateFile with this, which will fail when the file already exists. This file is then opened with openflags=RW. After reading this file, Home Menu then uses [[PTM_Services|PTM:GetTotalStepCount]], then uses FSFile:GetSize. Then Home Menu writes to the already opened gamecoin.dat file. &lt;br /&gt;
&lt;br /&gt;
At the same time as doing the above, Home Menu also uses(probably from a different thread) [[AMNet:GetTitleIDList3|AM:GetTitleIDList3]] with mediatype=NAND and maxTIDs=0x2000. Then Home Menu uses [[AMNet:ListTitles|AM:ListTitles]] with the NAND promotional-video titleID. Then Home Menu attempts to open the ExeFS:/icon in the NAND promotional-video title.&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Prior to doing the write, Home Menu uses [[FSFile:GetSize]]. Home Menu writes 0x2490-bytes to the file here. From a separate thread(?) at the same time, Home Menu also uses [[AM:ReloadDBS]] and AM command 0x00130040 with input=0x1.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu loads the u8 value from [[Config_Savegame|cfg]] blkID 0x000E0000 here.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[AM:ReloadDBS]], AM command 0x10070102(for theme DLC), AM command 0x00130040, and AM command 0x10050084(for theme DLC) are used here.&lt;br /&gt;
At the same time(from a different thread?), the &amp;quot;act:u&amp;quot; service handle is initialized with srv_GetServiceHandle. Then ACTU commands 0x00010084 and 0x000600C2 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| The [[NIM_Services|&amp;quot;nim:u&amp;quot;]] service handle is initialized with srv_GetServiceHandle. Then NIMU commands 0x000F0042, 0x00170042, 0x00150000, and 0x00050000 are used.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| AM command 0x10020104(theme DLC) is used here. Then Home Menu CXI RomFS data is read.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu CXI RomFS data is read. [[Filesystem_services|FS:GetSpecialContentIndex]] for the gamecard is used, then MICU initialization is done here(separate thread maybe?).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[ACU:GetWifiStatus]] is used, the NAND shared-extdata 0xf000000b archive is then opened here.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idb.dat&amp;quot;&lt;br /&gt;
| 0x2008&lt;br /&gt;
| This first opens the file for writing, then uses [[FSFile:GetSize]](output filesize is 0x6d4000). Then it writes to the file using size 0, then closes the file. Then [[PTM_Services|PTM:GetStepHistory]] is used. Then Home Menu opens &amp;quot;/idbt.dat&amp;quot;, then reads 0x2008-bytes.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Home Menu starts using [[News_Services|&amp;quot;news:s&amp;quot;]] commands here. While Home Menu is doing this, it also uses(from another thread?) [[NS_and_APT_Services|APT:PrepareToStartNewestHomeMenu]], [[NIM_Services|NIMU:GetState]], and [[NDM_Services|NDMU:OverrideDefaultDaemons]] with input value 0xF.&lt;br /&gt;
Later with that news-command code still running, Home Menu also uses the following commands: [[ACU:GetWifiStatus]], [[NDM_Services|NDMU:QueryExclusiveMode]], and CECDS command 0x000E0000. Then [[Config_Savegame|cfg]] blkID 0x000D0000 is loaded.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000b&lt;br /&gt;
| &amp;quot;/idbt.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| Home Menu writes 0x2008-bytes to this file.&lt;br /&gt;
|-&lt;br /&gt;
| NAND extdata 0xf000000e&lt;br /&gt;
| &amp;quot;/versionList.dat&amp;quot;&lt;br /&gt;
| Loaded from the filesize.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| boss:P command 0x00200082 is used with string &amp;quot;mmVerDl&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| Home Menu [[System_SaveData]]&lt;br /&gt;
| &amp;quot;/Launcher.dat&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
| When Home Menu is terminating(?), Home Menu writes 0x2490-bytes to the file here. After doing this, Home Menu opens, writes, and closes the file again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hardware reboot ===&lt;br /&gt;
During Home Menu start-up it uses [[APT:PrepareToStartNewestHomeMenu]]. If that doesn&#039;t return an error(normally NS returns 0xC8A0CFFC for that), Home Menu starts a hardware reboot with [[APT:StartNewestHomeMenu]] etc.&lt;br /&gt;
&lt;br /&gt;
On retail this essentially means a hardware-reboot will automatically trigger if [[Configuration_Memory|configmem]] SYSCOREVER doesn&#039;t match FIRM_SYSCOREVER, or when the current APPMEMTYPE doesn&#039;t match the default APPMEMTYPE for this Old3DS/New3ds model. The latter can happen with running New3DS NATIVE_FIRM with Old3DS system-titles, for example.&lt;br /&gt;
&lt;br /&gt;
== Returning to Home Menu from a crashed application ==&lt;br /&gt;
When returning to Home Menu from an application that didn&#039;t properly shutdown(like with an exception), PTM module writes data to the PTM system savedata. Then the system terminates Home Menu, and starts Home Menu again.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* http://www.nintendo.com/consumer/systems/3ds/en_na/menu_update.jsp&lt;br /&gt;
* http://www.nintendo.co.jp/netinfo/3ds/JPN/ja.html&lt;br /&gt;
* https://yls8.mtheall.com/ninupdates/reports.php&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20148</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20148"/>
		<updated>2017-07-06T10:03:48Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Actual structure */ I take that back, I was simply using the wrong function&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;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (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;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Upper/Lower screen flicker byte&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;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: backlight dimming enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono/stereo/surround)?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username in UTF16&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;
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same as above?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? Contains the email address set during Parental Restriction setup.&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.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ? (read by HID)&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;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| 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;
&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 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;
| ?&lt;br /&gt;
| Secret answer in UTF-16&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20147</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20147"/>
		<updated>2017-07-06T09:30:15Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Actual structure */ if anyone can figure out what it is...Tried &amp;quot;CRC16 over the whole payload excluding CRC offset, initval is 0&amp;quot; from https://www.3dbrew.org/wiki/Nintendo_Zone#Beacon_payload_format but it doesnt match&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;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (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;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Upper/Lower screen flicker byte&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;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: backlight dimming enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono/stereo/surround)?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username in UTF16&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;
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same as above?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? Contains the email address set during Parental Restriction setup.&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.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ? (read by HID)&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;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| 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;
&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;
| 0x4&lt;br /&gt;
| Some sort of checksum. Only the last 2 bytes seem to change.&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 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;
| ?&lt;br /&gt;
| Secret answer in UTF-16&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Nintendo_Zone&amp;diff=20146</id>
		<title>Nintendo Zone</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Nintendo_Zone&amp;diff=20146"/>
		<updated>2017-07-06T08:17:11Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Beacon payload format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Nintendo Zone&#039;&#039;&#039; is the successor to DS Download Stations, offering retailer exclusive content, game videos, screenshots, etc. As of February 6th 2012 demos are available for download, demos are [[NIM_Services|downloaded]] from the eShop servers and installed to SD card. NZone demos are the same ones available on eShop, these are region-locked as trying to download them from other regions results in an error. The 3DS NZone is significantly different from the DS(i) [http://dsibrew.org/wiki/Nintendo_Zone NZone]. Most content available at NZone is already available on eShop, like the screenshots/videos, game info etc.&lt;br /&gt;
&lt;br /&gt;
Like DSi, when an open 3DS detects NZone the originally hidden NZone title appears and a notification about it appears. Like DSi this title is already stored on NAND, originally this title only became accessible from home-menu once the 3DS was in a range of a NZone at least once, however at some point with a system update this title became always-accessible. When NZone beacons are in range, 3DS only detects NZone when not connected to Internet already. Once connected to a NZone AP, the beacon payload is cached until disconnected from the AP.&lt;br /&gt;
&lt;br /&gt;
When modified DSi nzone beacons are broadcasted with the 3DS Best Buy ApNum, DSi launcher won&#039;t blink the NZone title icon but the title will still semi-work. The NZone application would connect to the server, with buttons for demos, Best Buy, and WFC config displayed, but NZone will display an error a while after selecting &amp;quot;Best Buy&amp;quot; service after a bit of loading.(probably unsupported html tags etc)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The NZone browser interface is similar to the regular [[Internet Browser]], the browser engine used here is completely different however. Unlike the regular [[Internet Browser]] which uses the socket/SSL services directly, the Nintendo Zone application uses the [[HTTP_Services|HTTP]] service instead.&lt;br /&gt;
3D stereoscopic videos are supported via html &amp;quot;&amp;lt;media&amp;gt;&amp;quot; tags, for 3D videos the &amp;quot;mediatype&amp;quot; attribute is set to &amp;quot;3D&amp;quot;. For 2D videos videos the &amp;quot;mediatype&amp;quot; attribute is set to &amp;quot;2D&amp;quot;. This uses Mobiclip with file extension .moflex, the magic number from the first word in the video file is 0xabaa324c(little-endian).&lt;br /&gt;
&lt;br /&gt;
The 3DS NZone application immediately uses [[NIMS:CheckSysupdateAvailableSOAP]] once connected to the NZone AP, if an update is available and the user selects &amp;quot;Cancel&amp;quot; in the displayed dialog, the application will stop using the wifi AP.&lt;br /&gt;
&lt;br /&gt;
The user-agent used by the Nintendo Zone application is &amp;quot;NintendoZoneViewer/3.1&amp;quot;. The URL parameters sent to the dsdl.* HTTPS server are the same as DSi(besides the value of the console-type parameter and the &amp;quot;ver&amp;quot; parameter value), except 3DS also sends additional headers in the request using the same data sent in the URL parameters. The zonebnr server requires three more request headers(extra URL parameters are not needed here), the first of these three headers is &amp;quot;ZoneUserID&amp;quot; where the unknown value is 16 hex-digits(8-bytes in binary). The last two headers of these additional three headers contain data which was originally sent with the dsdl server URL parameters.&lt;br /&gt;
&lt;br /&gt;
The NZone beacon encryption is same as before, except some unknown fields in the cleartext was changed where 3DS will only &amp;quot;detect&amp;quot; NZone /w NZone icon blinking/enabled when the beacons&#039; fields are set this way. DSi will not detect these beacons. 3DS can use DS(i) NZone, but only if the NZone title is already enabled. With DS(i) beacons, 3DS connects to Internet but the NZone icon will not blink. However the NZone title will still work once launched.&lt;br /&gt;
&lt;br /&gt;
=== Beacon payload format ===&lt;br /&gt;
This seems to be identical to DS(i) NZone format except for the unknown fields. 3DS NZone is not region-locked like DS(i).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  OFFSET&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x00&lt;br /&gt;
|  32&lt;br /&gt;
|  AP SSID&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 10&lt;br /&gt;
| ApNum, required for connecting to the server. This is used by the server to determine which retailer NZone you&#039;re using. Apnum structure: 10 digits or RSSCCTTLLL. R is the decimal region, SS is the decimal ServiceID. CC is the two-letter country-code, TT is the 2-letter country state/province code, and LLL is the decimal locationID. Regions: 0) JPN 1) USA 2/3) EUR 4) KOR 5) CHN. LLL is always zero for non-JPN deployments, however in JPN this is unique per NZone hotspot location.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2a&lt;br /&gt;
| 2&lt;br /&gt;
| This u16 was always one in all dumps, unknown what this is. This isn&#039;t used by the client.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2c&lt;br /&gt;
| 24&lt;br /&gt;
| Some ServiceName, either in UTF-16 or ASCII&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 32&lt;br /&gt;
| AP crypto key, if any&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown, not used by the DS(i) client. For 3DS this value varies, for DS(i) this is 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x65&lt;br /&gt;
| 1&lt;br /&gt;
| AP crypto key type: 0) Open 1) WEP-64 2) WEP-128 3) WEP-152 4) WPA-PSK (TKIP) 5) WPA2-PSK (TKIP) 6) WPA-PSK (AES) 7) WPA2-PSK (AES) (the encryption key field contains the AP passphrase)&lt;br /&gt;
|-&lt;br /&gt;
| 0x66&lt;br /&gt;
| 1&lt;br /&gt;
| Bit 0: Enables Nintendo Zone content on DS(i)&amp;lt;br&amp;gt;Bit 1: Enables friend list and online gaming&amp;lt;br&amp;gt;Bit 4: Enables Nintendo Zone Viewer on 3DS&amp;lt;br&amp;gt;Bit 7: Blocks the Nintendo eShop&amp;lt;br&amp;gt;Bits 2, 3, 5, 6: Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x67&lt;br /&gt;
| 1&lt;br /&gt;
| Bit 0: Blocks the internet browser&amp;lt;br&amp;gt;Bits 1 to 7: Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 4&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x6c&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown, seems to be always 0x428&lt;br /&gt;
|-&lt;br /&gt;
| 0x6e&lt;br /&gt;
| 2&lt;br /&gt;
| CRC16 over the whole payload excluding CRC offset, initval is 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Wi-Fi Hotspots ==&lt;br /&gt;
&lt;br /&gt;
=== Hotspot.conf format ===&lt;br /&gt;
The list of NZone hotspots is loaded from &amp;quot;conf:/hotspot.conf&amp;quot; by the AC system applet, where &amp;quot;conf:&amp;quot; is the 000400DB00010502 [[NCCH#CFA|CFA]] archive. This is a CSV file, with LF-style newlines. All of the information stored in the NZone beacon is also stored in this file for each hotspot. This file can list a max of 100 hotspots.(As of title version v1024, hotspot.conf lists 52 hotspots) This format can be parsed by [https://github.com/yellows8/hotspotconf-tool hotspotconf-tool].&lt;br /&gt;
&lt;br /&gt;
Beginning the CSV file is the Interval record and field. Following that is the hotspot records on one line, and the fields for each hotspot on individual lines. Some fields are Base64-encoded, for those the Base64 padding character &#039;*&#039; is used instead of &#039;=&#039;.&lt;br /&gt;
&lt;br /&gt;
IsBrowser, IsShop, and IsGame might determine whether the [[Internet Browser]], [[eShop]], and games&#039; online multi-player may be used.&lt;br /&gt;
&lt;br /&gt;
==== Records ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Record name&lt;br /&gt;
!  Field max len&lt;br /&gt;
!  Field data&lt;br /&gt;
|-&lt;br /&gt;
| Interval&lt;br /&gt;
| Arbitrary&lt;br /&gt;
| Decimal interval, unknown (usually 20)&lt;br /&gt;
|-&lt;br /&gt;
| ServiceName&lt;br /&gt;
| 0x40 (after decode)&lt;br /&gt;
| Hotspot Base64-encoded ASCII ServiceName&lt;br /&gt;
|-&lt;br /&gt;
| Url&lt;br /&gt;
| 0x80 (after decode)&lt;br /&gt;
| Hotspot Base64-encoded URL (usually unused, optionally links to the retailer&#039;s website)&lt;br /&gt;
|-&lt;br /&gt;
| Ssid&lt;br /&gt;
| 32 (after decode)&lt;br /&gt;
| Hotspot Base64-encoded SSID&lt;br /&gt;
|-&lt;br /&gt;
| SecurityKey&lt;br /&gt;
| 0x40 (after decode)&lt;br /&gt;
| Hotspot Base64-encoded encryption key. For encryption type7, WPA2-PSK is used, however unlike the NZone beacon this is the 0x20-byte WPA-PSK.&lt;br /&gt;
|-&lt;br /&gt;
| SecurityMode&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot encryption type (0 for none)&lt;br /&gt;
|-&lt;br /&gt;
| ApNum&lt;br /&gt;
| 10&lt;br /&gt;
| Hotspot ApNum, see above NZone beacon info&lt;br /&gt;
|-&lt;br /&gt;
| IsVendorIE&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot flag, can be either 1 or 0&lt;br /&gt;
|-&lt;br /&gt;
| IsBackground&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot flag, can be either 1 or 0&lt;br /&gt;
|-&lt;br /&gt;
| IsBrowser&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot flag, can be either 1 or 0&lt;br /&gt;
|-&lt;br /&gt;
| IsShop&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot flag, can be either 1 or 0&lt;br /&gt;
|-&lt;br /&gt;
| IsGame&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot flag, can be either 1 or 0&lt;br /&gt;
|-&lt;br /&gt;
| IsSetToFW&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot flag, can be either 1 or 0&lt;br /&gt;
|-&lt;br /&gt;
| IsZone&lt;br /&gt;
| 1&lt;br /&gt;
| Decimal hotspot flag, can be either 1 or 0. This field was added for newer NZone hotspot.conf versions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hotspots ===&lt;br /&gt;
Hotspots not listed in hotspot.conf can only be used via NZone beacons. The below flags is the combined &amp;quot;IsXXX&amp;quot; fields from hotspot.conf, excluding IsSetToFW. The below hotspot.conf version specifies what title version that hotspot was added to the list, if at all.(&amp;quot;Unknown&amp;quot; indicates that the hotspot is present in v1024, but it&#039;s unknown whether it was in the previous version.)&lt;br /&gt;
&lt;br /&gt;
==== Hotspot list from NZone hotspot.conf ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! SSID !! Security !! Region/country || ServiceName !! Flags !! Hotspot.conf version&lt;br /&gt;
|-&lt;br /&gt;
| wifine || None || JPN  || [http://wifine.jp/ Wifine] || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| NintendoSpotPass1 || None || EUR || Nintendo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| NintendoSpotPass2 || None || EUR || Nintendo || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| attwifi || None || USA || AT&amp;amp;T || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| SIMON WiFi || None || USA || Simon Malls || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| noasp01 || None || USA || NOA (Nintendo events) || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| noasp02 || None || USA || NOA (Nintendo events) || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Telekom || None || EUR (Germany) || Telekom || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Telekom_ICE || None || EUR (Germany) || Telekom || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Guglielmo || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| ASTRO || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Banca Sella WiFi Clienti || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| confindustria || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Grand || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Guglielmo Rimini WiFi || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| GuglielmoDallaRosaPrati || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Hotels || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| L.Bettolo || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| LecceWireless || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| P.zza Nicoloso || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| PortoDiTrieste || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Comune-Na Piazze WIFI || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| WiFi_Stampa || None || IT || Guglielmo || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| KPN || None || EUR (NL) || KPN || 1, 1, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| MCDONALDS || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| AREA_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| PATaPAIN_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| CASINO_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| all_seasons_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| ADAGIO_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| PULLMAN_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Best_Western_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| CreditAgricole_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| IBIS_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| MERCURE_by_METEOR || None || FR || Meteor || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Telefonica || None || ES || Telefonica || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| GOWEXWiFi || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| OurenseWiFi || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RED_LIBRE_AVILES_WILOC || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| GIJON WIFI || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 01MIERESWIFI || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 01EibarWifi || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| WIFIBUR || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| ValladolidWiFi || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 01PuertoDelRosarioWiFi || None || ES || Gowex || 1, 0, 0, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| PT-WIFI || None || PT || PTWiFi || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| FON_ZON_FREE_INTERNET || None || PT || ZON || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.thecloud.net/free-wifi/support/faqs/ WiFi Zone - The Cloud] || None || EUR (GB) || [https://www.thecloud.net/ The Cloud] || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.thecloud.net/free-wifi/support/faqs/ Mycloud] || None || EUR (GB) || [https://www.thecloud.net/ The Cloud] || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.thecloud.net/free-wifi/support/faqs/ WLAN Zone - The Cloud] || None || EUR (GB) || [https://www.thecloud.net/ The Cloud] || 1, 0, 0, 0, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.thecloud.net/free-wifi/support/faqs/ _The Cloud] || None || EUR (GB) || [https://www.thecloud.net/ The Cloud] || ? || After v1024&lt;br /&gt;
|-&lt;br /&gt;
| FREESPOT || None || JPN  || FREESPOT || 1, 1, 1, 1, 1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.tsutaya.co.jp/tc/game/deds/about.html TSUTAYA] || None || JPN || TSUTAYA || ? || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Wayport_Access || None || USA || McDonalds || ? || After v1024&lt;br /&gt;
|-&lt;br /&gt;
| Boingo Hotspot || None || USA || Boingo || ? || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| ibahn || None || USA || iBAHN || ? || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| BELLWIFI@MCDONALDS || None || USA (Canada) || Bell || ? || After v1024&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.free-hotspot.com/ free-hotspot.com] || None || EUR || free-hotspot.com || ? || After v1024&lt;br /&gt;
|-&lt;br /&gt;
| Bestbuy || WPA2-PSK || USA || Bestbuy || || After v1024&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [http://yls8.mtheall.com/ninupdates/3ds_nzonehotspots.php this].&lt;br /&gt;
&lt;br /&gt;
==== NZone hotspots only accessible via NZone beacons ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! SSID !! Security !! Region/country || ServiceName || Notes&lt;br /&gt;
|-&lt;br /&gt;
| noasp03 || None || USA || NOA (Nintendo event at GDC) || &lt;br /&gt;
|-&lt;br /&gt;
| BestBuy || None || USA  || BestBuy || &lt;br /&gt;
|-&lt;br /&gt;
| [http://webapp.7spot.jp/howtoconnect.html 7SPOT] || None || JPN || 7-11 || A LAN-only hostname used is for the retailer&#039;s site linked to from the NZone server.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above hotspots can only be accessed by broadcasting NZone beacons which contain the encrypted Nintendo tag data.&lt;br /&gt;
&lt;br /&gt;
==== Hotspot Notes ====&lt;br /&gt;
&lt;br /&gt;
* These can be configured on you own router/laptop/phone to identify as a Nintendo Zone.&lt;br /&gt;
* You will need an available Internet connection to be able to connect to the servers.&lt;br /&gt;
* After connecting the Wi-Fi network, the page displayed will be of the device&#039;s region. (Some regions, such as Australia, will not be redirected to a local Nintendo Zone page as there are no plans to introduce Nintendo Zone(s) to that region. If a 3DS has its region set to one of these regions where there are no plans to introduce a Nintendo Zone, they will be brought to the Nintendo Zone of the region of the SSID) &lt;br /&gt;
* If you intend to create a permanent, private, Nintendo Zone WiFi spot. It is recommended that you enable MAC address filtering to only allow your devices. As using any form of encryption will prevent the Nintendo Zone WiFi spot from working with your 3DS.&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20145</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20145"/>
		<updated>2017-07-06T08:02:48Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Actual structure */&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;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (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;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Upper/Lower screen flicker byte&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;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: backlight dimming enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono/stereo/surround)?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username in UTF16&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;
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same as above?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? Contains the email address set during Parental Restriction setup.&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.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ? (read by HID)&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;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| 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;
&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;
| 0x4&lt;br /&gt;
| Some sort of checksum.&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 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;
| ?&lt;br /&gt;
| Secret answer in UTF-16&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20144</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20144"/>
		<updated>2017-07-05T18:32:30Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Actual structure */&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;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (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;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Upper/Lower screen flicker byte&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;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: backlight dimming enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono/stereo/surround)?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username in UTF16&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;
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same as above?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? Contains the email address set during Parental Restriction setup.&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.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ? (read by HID)&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;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| 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;
&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;
| 0x4&lt;br /&gt;
| Some sort of checksum.&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;
| Byte 0x0 could be the channel? 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;
| 0x2&lt;br /&gt;
| Byte 0x0 could be the channel? 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 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;
| ?&lt;br /&gt;
| Secret answer in UTF-16&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20141</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20141"/>
		<updated>2017-07-05T16:42:00Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Network structure */ good catch by yellows8&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;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (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;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Upper/Lower screen flicker byte&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;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: backlight dimming enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono/stereo/surround)?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username in UTF16&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;
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same as above?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? Contains the email address set during Parental Restriction setup.&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.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ? (read by HID)&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;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| 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;
&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;
| 0x4&lt;br /&gt;
| Some sort of checksum.&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;
| Byte 0x0 could be the channel? 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;
| 0x8&lt;br /&gt;
| Byte 0x6 could be the channel? 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;
&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 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;
| ?&lt;br /&gt;
| Secret answer in UTF-16&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20139</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=20139"/>
		<updated>2017-07-05T16:18:08Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: Add wifi slot struct, a few unknowns remains&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;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (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;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Upper/Lower screen flicker byte&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;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ? (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: backlight dimming enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono/stereo/surround)?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username in UTF16&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;
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same as above?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? Contains the email address set during Parental Restriction setup.&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.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
| ? (read by HID)&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;
| ?&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;
| ?&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;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&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;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| 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;
&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;
| always 0x07 ?&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;
| 0x4&lt;br /&gt;
| Some sort of checksum.&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;
| Byte 0x0 could be the channel? 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;
| 0x8&lt;br /&gt;
| Byte 0x6 could be the channel? 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;
&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 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;
| ?&lt;br /&gt;
| Secret answer in UTF-16&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Camera_Applet&amp;diff=19607</id>
		<title>Camera Applet</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Camera_Applet&amp;diff=19607"/>
		<updated>2017-02-12T17:17:22Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: wording needs changing but I think this should be said - even works on rednand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Quick Camera&#039;&#039;&#039; is a shortcut on HOME Menu of the 3DS software. It is activated with the L and R buttons, and can access both the outer and inner camera.&lt;br /&gt;
&lt;br /&gt;
This shortcut can also function as a QR code scanner, opening the web browser with the link contained in the QR code.&lt;br /&gt;
You can remove and put back in the SD card safely while this is opened&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=17969</id>
		<title>3DS Userland Flaws</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=17969"/>
		<updated>2016-08-22T21:07:31Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Useless crashes / applications which were fuzzed */  My bad, the reboot was caused by luma dev. crash is useless, I think?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists vulnerabilities / exploits for 3DS applications and applets. Exploiting these initially results in ROP, from that ROP one can then for example try exploiting [[3DS_System_Flaws|system]] flaw(s).&lt;br /&gt;
&lt;br /&gt;
=Non-system applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Application name&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in app/system version&lt;br /&gt;
!  Last app/system version this flaw was checked for&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this vuln was discovered&lt;br /&gt;
!  Vuln discovered by&lt;br /&gt;
|-&lt;br /&gt;
| Cubic Ninja&lt;br /&gt;
| Map-data stack smash&lt;br /&gt;
| See [[Ninjhax|here]] regarding Ninjhax.&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.4.0-29]].&lt;br /&gt;
| Ninjhax release&lt;br /&gt;
| July 2014&lt;br /&gt;
| [[User:smea|smea]]&lt;br /&gt;
|-&lt;br /&gt;
| The Legend of Zelda: Ocarina of Time 3D&lt;br /&gt;
| UTF-16 name string buffer overflow via unchecked u8 length field&lt;br /&gt;
| The u8 at offset 0x2C in the savefile is the character-length of the UTF-16 string at offset 0x1C. When copying this string, it&#039;s essentially a memory-copy with lenval*2, not a string-copy. This can be used to trigger buffer overflows at various locations depending on the string length.&lt;br /&gt;
* When value is &amp;gt;=0x6E it crashes when saving the saveslot, this causes a stack-smash however it normally crashes before it returns from the function which had the stack-frame overwritten.&lt;br /&gt;
* With value &amp;gt;=0x9A, it crashes via stack-smash in-game once any dialogs are opened(touching buttons on the touch-screen can trigger it too).&lt;br /&gt;
* Length value&amp;gt;=0xCD causes a crash while loading the saveslot, via a heap buffer overflow. This buf-overflow overwrites a heap memchunk following the allocated buffer. When the first 16-bits overwriting that heap memchunk is not the memchunk magic-number(0x7373), the mem-alloc code will just return a NULL ptr which later results in a crash. When the magic-number is valid, the mem-alloc code will continue to attempt to parse the memchunk, which may crash depending on the data which overwrote the memchunk. This heap code is separate from the CTRSDK heap code. Exploiting this doesn&#039;t seem to be possible: since the heap code actually verifies that the magic-number for the next/prev memchunk ptrs are correct(unlike CTRSDK), it&#039;s not possible to change those ptrs to useful arbitrary addresses outside of savedata(like with triggering a write to a c++ object ptr which later is used with a vtable func-call, this is what one would do with CTRSDK heap here).&lt;br /&gt;
&lt;br /&gt;
On March 11, 2015, an exploit using this vuln was released, that one was intended for warez/etc. The following exploit wasn&#039;t released before then mainly because doing so would (presumably) result in the vuln being fixed. The following old exploit was released on March 14, 2015: [https://github.com/yellows8/oot3dhax].&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.6.0-31]].&lt;br /&gt;
| March 11, 2015&lt;br /&gt;
| Around October 22, 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Super Smash Bros 3DS&lt;br /&gt;
| Buffer overflow in local-multiplayer beacon handling.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| App: v1.1.3&lt;br /&gt;
| See [[smashbroshax|here]]. System: [[10.3.0-28]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Super Mystery Dungeon&lt;br /&gt;
| Heap overflow within linear memory via unchecked save file length&lt;br /&gt;
| Pokemon Super Mystery Dungeon uses zlib compression for most of its save files, possibly due to the save files being larger than it&#039;s predecessor, Gates to Infinity. When a save file is being prepared to be loaded and read from, only a 0x32000 large buffer is allocated for file reading, and a 0x3e800-large buffer for decompression is also allocated before the file is read. However, the game does not limit the size of the file read to this allocation bound, allowing for the file to overflow into the linear memory heap and into the next allocation. Since Pokemon Super Mystery Dungeon stores allocation memchunks directly before the allocation, overwriting the next memchunk with a corrupted one allows for arbitrary writes of linear heap pointers when the next buffer is allocated or arbitrary writes of any pointer within writable memory when the corrupted buffer is freed.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 14, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| VVVVVV&lt;br /&gt;
| Buffer overflow in XML save file array parsing&lt;br /&gt;
| VVVVVV utilizes several XML files (renamed with a .vvv extension) to store level save data, stats and settings. Within these XML files are several tags containing an array of data which, when parsed, is not properly checked to be of proper length for the tag being parsed from. This allows for an overflow of 16-bit array values from the location where the array is parsed. With unlock.vvv, XML data is parsed to the stack, and with level saves the heap. This allows for the pointer where the level save worldmap tag array should be parsed into to be overwritten with a stack address, allowing for ROP from within the XML array parsing function on the next level load.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 25, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| Citizens of Earth&lt;br /&gt;
| Save file read stack smash&lt;br /&gt;
| Citizens of Earth also uses &amp;quot;XML&amp;quot; files for saves, which are actually entirely binary data (not XML at all) with no checksums. These files are read from the filesystem on to a fixed size stack buffer which leads to an incredibly trivial stack smash. When using the autosave slot for this, the save is parsed when the user selects &amp;quot;continue&amp;quot;. When using one of the dedicated save slots (1-3), the save is parsed shortly after the company splash screens fade. Note that the save is read quite high (descending) on the stack - when exploiting this, one would likely need to move SP due to almost instantly overflowing the physical stack.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| May 5, 2016&lt;br /&gt;
| [[User:Dazzozo|Dazzozo]]&lt;br /&gt;
|-&lt;br /&gt;
| SmileBASIC 3.x&lt;br /&gt;
| Poor parameter validation on &amp;quot;BGSCREEN&amp;quot; command&lt;br /&gt;
| The SmileBASIC &amp;quot;BGSCREEN&amp;quot; command&#039;s second parameter is not properly validated as being within range.  As a result, one can set the screen size to an absurdly large value.  This means that the &amp;quot;BGGET&amp;quot; and &amp;quot;BGPUT&amp;quot; commands can then be used on out-of-range values to read and write a significant chunk of the interpreter&#039;s address space.&lt;br /&gt;
With a series of carefully-designed BGPUT commands, one can build a ROP chain and cause it to be executed.&lt;br /&gt;
| App: 3.3.2.&lt;br /&gt;
| System: [[11.0.0-33]].&lt;br /&gt;
| July 20, 2016&lt;br /&gt;
| Around June 26, 2016&lt;br /&gt;
| slackerSnail, 12Me12, incvoid&lt;br /&gt;
Exploited by MrNbaYoh and [[User:Plutooo|plutoo]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Useless crashes / applications which were fuzzed==&lt;br /&gt;
* Pushmo (3DSWare), QR codes: level name is properly limited to 16 characters, game doesn&#039;t crash with a longer name. The only possible crashes are triggered by out-of-bounds array index values, these crashes are not exploitable due to the index value being 8bit.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/yellows8/mm3d_re The Legend of Zelda: Majora&#039;s Mask 3D]&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;The Legend of Zelda: A Link Between Worlds&amp;quot; and &amp;quot;The Legend of Zelda: Tri Force Heroes&amp;quot;: these games don&#039;t crash at all when the entire save-file(minus constant header data) is overwritten with /dev/random output / 0xFF-bytes. All of the CRC32s were updated for this of course.&lt;br /&gt;
&lt;br /&gt;
* Pokemon Mystery Dungeon: Gates to Infinity has the same unchecked file bounds as Pokemon Super Mystery Dungeon, however since save compression was introduced in Pokemon Super Mystery Dungeon, it only allocates one buffer within the application heap instead of several within the linear heap, resulting in nothing to corrupt or overwrite even if the file&#039;s length is extended past it&#039;s allocation.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Kid Icarus: Uprising&amp;quot;: Overwriting the entire savedata results in various crashes, nothing useful.&lt;br /&gt;
&lt;br /&gt;
* Savedata/extdata for &amp;quot;Super Smash Bros 3DS&amp;quot;: Overwriting the various files stored under savedata/extdata results in useless crashes.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;StarFox 64 3D&amp;quot;: Doesn&#039;t crash at all with the entire savedata overwritten.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Frogger 3D&amp;quot;: Overwriting a savefile with random-data results in *nothing* crashing.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mutant Mudds&amp;quot;: Overwriting the savefile with random data results in a crash&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Animal Crossing: New Leaf&amp;quot;: Creating a QR code from random data results in a valid QR code and a random design. In some very rare cases(which aren&#039;t always reproducible?) a crash/etc may occur, but this isn&#039;t known to be useful.&lt;br /&gt;
&lt;br /&gt;
==Crashes needing investigation==&lt;br /&gt;
* Disney Infinity crashes when all savedata overwritten with /dev/urandom. No checksums. 0xFF bytes don&#039;t cause a crash.&lt;br /&gt;
&lt;br /&gt;
* Football Up Online / Soccer Up Online and Football Up 3D / Soccer Up 3D crash when teamname(UTF-16) length = 0x48 AND 0x20 null bytes are removed after just the name or if teamname length is way longer than 0x48.&lt;br /&gt;
&lt;br /&gt;
=System applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| 3DS [[System Settings]] DS profile string stack-smash&lt;br /&gt;
| Too long or corrupted strings (01Ah  2   Nickname length in characters     050h  2   Message length in characters) in the NVRAM DS user settings (System Settings-&amp;gt;Other Settings-&amp;gt;Profile-&amp;gt;Nintendo DS Profile) cause it to crash in 3DS-mode due to a stack-smash. The DSi is not vulnerable to this, DSi launcher(menu) and DSi System Settings will reset the NVRAM user-settings if the length field values are too long(same result as when the CRCs are invalid). TWL_FIRM also resets the NVRAM user-settings when the string-length(s) are too long.&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Ichfly|Ichfly]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=System applets=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Introduced with version&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| Webkit/web-browser bugs&lt;br /&gt;
| spider has had at least three different code-execution exploits. Majority of them are use-after-free issues. See also [[browserhax|here]].&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 2013?&lt;br /&gt;
|&lt;br /&gt;
| A lot of people.&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS/New3DS [[Internet_Browser|Browser-version-check]] bypass&lt;br /&gt;
| When the browser-version-check code runs where the savedata for it was never initialized(such as when the user used the &amp;quot;Initialize savedata&amp;quot; option), it will use base_timestamp=0 instead of the timestamp loaded from savedata. This is then used with &amp;quot;if(cur_timestamp - base_timestamp &amp;gt;= &amp;lt;24h timestamp&amp;gt;){Run browser-version-check HTTPS request code}&amp;quot;.&lt;br /&gt;
Hence, if the savedata was just initialized, and if the system datetime is set to before January 2, 2000, the browser-version-check will be skipped. This includes January 1, 2000, 00:00, because that&#039;s the epoch(timestamp value 0x0) used with this timestamp.&lt;br /&gt;
&lt;br /&gt;
See [http://yls8.mtheall.com/3dsbrowserhax.php here] for bypass usage instructions.&lt;br /&gt;
&lt;br /&gt;
This was fixed with [[10.7.0-32|10.7.0-32]], see [[Internet_Browser|here]] for details.&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| February 25, 2016&lt;br /&gt;
| November 2, 2015 (Exactly one week after the browser version pages were initially updated server-side)&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Home Menu==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Introduced with version&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| sdiconhax&lt;br /&gt;
| This is basically the same as nandiconhax, the vulnerable SD/NAND functions are &#039;&#039;identical&#039;&#039; minus the file-buffer offsets. Exploitation is different due to different heap-buffer location though. Unlike nandiconhax, the icon buffer for SD is located in linearmem(with recent Home Menu versions at least). This is used by [[menuhax]].&lt;br /&gt;
| None&lt;br /&gt;
| [[11.0.0-33|11.0.0-X]]&lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
| July 27, 2016&lt;br /&gt;
| October 23, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[System_SaveData|NAND-savedata]] Launcher.dat icons (nandiconhax)&lt;br /&gt;
| The homemenu code processing the titleid list @ launcherdat+8 copies those titleIDs to another buffer, where the offset relative to that buffer is calculated using the corresponding s8/s16 entries. Those two values are not range checked at all. Hence, one can use this to write u64(s) with arbitrary values to before/after this allocated output buffer. See [[Home_Menu|here]] regarding Launcher.dat structure.&lt;br /&gt;
&lt;br /&gt;
This can be exploited(with Launcher.dat loading at startup at least) by using a s16 for the icon entry with value 0xFFEC(-20)(and perhaps more icons with similar s16 values to write multiple u64s). The result is that the u64 value is written to outbuf-0xA0, which overwrites object+0(vtable) and object+4(doesn&#039;t matter here) for an object that gets used a bit after the vulnerable function triggers. The low 32bits of the u64 can then be set to the address of controlled memory(either outbuf in regular heap or the entire launcherdat buffer in linearmem), for use as a fake vtable in order to get control of PC. From there one can begin ROP via vtable funcptrs to do a stack-pivot(r4=objectaddr at the time the above object gets used).&lt;br /&gt;
&lt;br /&gt;
Originally this vuln could only be triggered via Launcher.dat at Home Menu startup, right after Launcher.dat gets loaded + memory gets allocated, once the file-format version code is finished running. Starting with v9.6 this can be triggered when loading layouts from SD extdata as well. The vuln itself triggers before the layout data is written to Launcher.dat, but it doesn&#039;t seem to be possible to overwrite anything which actually gets used before the function which writes Launcher.dat into the layout gets called.&lt;br /&gt;
&lt;br /&gt;
Home Menu has some sort of fail-safe system(or at least on v9.7) when Home Menu crashes due to Launcher.dat(this also applies for other things with Home Menu): after crashing once, Home Menu resets Launcher.dat to a state where it no longer crashes anymore. However, note that any exploits using this which hang/etc without crashing will still brick the system. &#039;&#039;&#039;Hence, attempting anything with this on physnand without hw-nand-access isn&#039;t really recommended.&#039;&#039;&#039;&lt;br /&gt;
| None&lt;br /&gt;
| [[11.0.0-33|11.0.0-X]]&lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| May 14, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Theme-data decompression buffer overflow ([[menuhax|themehax]])&lt;br /&gt;
| The only func-call size parameter used by the theme decompression function is one for the compressed size, none for the decompressed size. The decompressed-size value from the LZ header is used by this function to check when to stop decompressing, but this function itself has nothing to verify the decompressed_size with. The code calling this function does not check or even use the decompressed size from the header either.&lt;br /&gt;
&lt;br /&gt;
This function is separate from the rest of the Home Menu code: the function used for decompressing themes is *only* used for decompressing themes, nothing else. There&#039;s a separate decompression function in Home Menu used for decompressing everything else.&lt;br /&gt;
&lt;br /&gt;
That other decompression function in Home Menu handles decompression size properly(decompressed size check for max buffer size is done by code calling the other function, not in the function itself). Unlike the other function, the theme function supports multiple LZ algorithms, but the one which actually gets used in official themes is the same one supported by the other function anyway.&lt;br /&gt;
&lt;br /&gt;
See also [[menuhax|here]].&lt;br /&gt;
&lt;br /&gt;
With [[10.2.0-28|10.2.0-X]] Home Menu, the only code change was that the following was added right after theme-load and before actual decompression: &amp;quot;if(&amp;lt;get_lzheader_decompressed_size&amp;gt;(compressed_buf) &amp;gt; 0x150000)&amp;lt;exit&amp;gt;;&amp;quot;. This fixed the vuln.&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| &amp;lt;Old3DS/New3DS version which added initial theme support&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| December 22, 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]], [[User:Myria|Myria]] independently (~spring 2015)&lt;br /&gt;
|-&lt;br /&gt;
| Shuffle body-data buffer overflow ([[menuhax|shufflehax]])&lt;br /&gt;
| See [[menuhax|here]].&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| January 3, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Extdata file-data loading buffer overflow&lt;br /&gt;
| The extdata file-reading code allocates a fixed-size heap buffer for the expected filesize, then reads the filedata into this buffer using the actual FS filesize. Before v5.0 the filesize used here wasn&#039;t validated, hence if the filesize is larger than alloc_size a buffer overflow would occur. &#039;&#039;After&#039;&#039; doing the file-read it does validate that the actual_readsize matches the alloc_size, but at this point the buffer overflow has already occurred.&lt;br /&gt;
&lt;br /&gt;
This affected at least the following: SaveData.dat and Cache.dat.&lt;br /&gt;
&lt;br /&gt;
This can be triggered with SaveData.dat by installing a &amp;lt;v4.0 Home Menu version, with Home Menu extdata from &amp;gt;=v4.0 still on SD. When this is done with v2.0 Home Menu, a kernelpanic occurs when processing an AM command(it appears a buffer ptr which is then passed to a command was overwritten with 0x0 - of course other SaveData.dat filesizes may result in different behaviour).&lt;br /&gt;
| [[5.0.0-11|5.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The icon data arrays used with {sd/nand}iconhax were added to SaveData.dat/Launcher.dat with [[4.0.0-7|4.0.0-X]], hence the vulnerable functions were added with that same version.&lt;br /&gt;
&lt;br /&gt;
With &amp;lt;=v4.0 the SaveData.dat buffer is located in the regular heap. It&#039;s unknown when exactly it was moved to linearmem, which is where it&#039;s located with recent versions. It&#039;s located in linearmem for KOR &amp;gt;=v9.6 for example.&lt;br /&gt;
&lt;br /&gt;
==Useless crashes==&lt;br /&gt;
Old3DS system web-browser:&lt;br /&gt;
* 2^32 characters long string(&#039;&#039;finally&#039;&#039; fixed with v10.6): this is similar to the vulnerability fixed [http://git.chromium.org/gitweb/?p=external/Webkit.git;a=commitdiff;h=ec471f16fbd1f879cb631f9b022fd16acd75f4d4 here], concat-large-strings-crash2.html triggers a crash which is about the same as the one triggered by a 2^32 string. Most of the time this vulnerability will cause a memory page permissions fault, since the WebKit code attempts to copy the string text data to the output buffer located in read-only [[CRO0|CRO]] heap memory. The only difference between a crash triggered by a 2^32 string and the concat-large-strings-crash2.html crash is at the former copies the string data using the original string length(like 1 text character for &amp;quot;x&amp;quot;, 4 for &amp;quot;xxxx&amp;quot;) while the latter attempts to copy &amp;gt;12MB. In some &#039;&#039;very&#039;&#039; rare cases a thread separate from the string data-copy thread will crash, this might be exploitable. However, this is mostly useless since it rarely crashes this way.&lt;br /&gt;
&lt;br /&gt;
* Trying to directly load a page via the browser &amp;quot;URL&amp;quot; option with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] setup, causes a crash to trigger in oss.cro due to an use-after-free being caught with webkitdebug. This is presumably some sort of realloc() issue in the libcurl version used by the &amp;lt;={v10.2-v10.3} browser. This happens with *every* *single* *page* one tries to load via the &amp;quot;URL&amp;quot; option, but not when loading links on the current page, hence this is probably useless. A different use-after-free with realloc triggers with loading any page at all regardless of method too(libcurl probably).&lt;br /&gt;
&lt;br /&gt;
* This WebKit build has &#039;&#039;a lot&#039;&#039; of crash-trigger bugs that only happen with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] completely setup(addr accesses near 0x0), with &#039;&#039;just&#039;&#039; trying to load any page at all.&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=SMDH&amp;diff=17571</id>
		<title>SMDH</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=SMDH&amp;diff=17571"/>
		<updated>2016-06-24T11:39:29Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Region Specific Game Age Ratings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the format of the icon stored at [[NCCH#CXI|CXI]] ExeFS:/icon and [[CIA]] icons.&lt;br /&gt;
The size of icons is 0x36c0 bytes. The CXI icon is displayed by [[Home Menu]] and [[System Settings]](3DS Software Management), while [[CIA#Meta|CIA icons]] are dummies and not yet utilised by Dev 3DS&#039; (as of rev 47586).&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  OFFSET&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x00&lt;br /&gt;
|  0x04 &lt;br /&gt;
|  Magic &#039;SMDH&#039;&lt;br /&gt;
|- &lt;br /&gt;
|  0x04&lt;br /&gt;
|  0x02 &lt;br /&gt;
|  Version&lt;br /&gt;
|- &lt;br /&gt;
|  0x06&lt;br /&gt;
|  0x02 &lt;br /&gt;
|  Reserved&lt;br /&gt;
|-&lt;br /&gt;
|  0x8&lt;br /&gt;
|  0x2000&lt;br /&gt;
|  16 application titles structs, each 0x200 bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x2008&lt;br /&gt;
| 0x30&lt;br /&gt;
| Application Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x2038&lt;br /&gt;
| 0x8&lt;br /&gt;
| Reserved &lt;br /&gt;
|-&lt;br /&gt;
| 0x2040&lt;br /&gt;
| 0x1680&lt;br /&gt;
| Icon graphics&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Application Titles ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  START&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x00&lt;br /&gt;
|  0x80&lt;br /&gt;
|  Short Description&lt;br /&gt;
|- &lt;br /&gt;
|  0x80&lt;br /&gt;
|  0x100 &lt;br /&gt;
|  Long Description&lt;br /&gt;
|- &lt;br /&gt;
|  0x180&lt;br /&gt;
|  0x80 &lt;br /&gt;
|  Publisher&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All encoded in UTF-16.&lt;br /&gt;
There are 16 app title structs(currently only 12 are used), each one for separate languages.&lt;br /&gt;
&lt;br /&gt;
The languages by order of appearance:&lt;br /&gt;
&lt;br /&gt;
* 1st: Japanese title name&lt;br /&gt;
* 2nd: English title name&lt;br /&gt;
* 3rd: French title name&lt;br /&gt;
* 4th: German title name&lt;br /&gt;
* 5th: Italian title name&lt;br /&gt;
* 6th: Spanish title name&lt;br /&gt;
* 7th: Simplified Chinese title name&lt;br /&gt;
* 8th: Korean title name&lt;br /&gt;
* 9th: Dutch title name&lt;br /&gt;
* 10th: Portuguese title name&lt;br /&gt;
* 11th: Russian title name&lt;br /&gt;
* 12th: Traditional Chinese title name&lt;br /&gt;
&lt;br /&gt;
== Application Settings ==&lt;br /&gt;
&lt;br /&gt;
Most of these flags are only used by the [[Home Menu]]. All of these are represented in SMDH files in little endian. But when documented below, the tables represent values in big endian.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  START&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x2008&lt;br /&gt;
|  0x10&lt;br /&gt;
|  Region Specific Game Ratings (For use with Parental Controls)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2018&lt;br /&gt;
|  0x4&lt;br /&gt;
|  Region Lockout&lt;br /&gt;
|-  &lt;br /&gt;
|  0x201C&lt;br /&gt;
|  0xC &lt;br /&gt;
|  Match Maker IDs (Online Play)&lt;br /&gt;
|-    &lt;br /&gt;
|  0x2028&lt;br /&gt;
|  0x4&lt;br /&gt;
|  Flags&lt;br /&gt;
|-    &lt;br /&gt;
|  0x202C&lt;br /&gt;
|  0x2 &lt;br /&gt;
|  EULA Version&lt;br /&gt;
|-    &lt;br /&gt;
|  0x202E&lt;br /&gt;
|  0x2 &lt;br /&gt;
|  Reserved&lt;br /&gt;
|-  &lt;br /&gt;
|  0x2030&lt;br /&gt;
|  0x4 &lt;br /&gt;
|  &#039;Optimal Animation Default Frame&#039; (for BNR)&lt;br /&gt;
|-    &lt;br /&gt;
|  0x2034&lt;br /&gt;
|  0x4 &lt;br /&gt;
|  CEC (StreetPass) ID (So the Home Menu knows which application icon to show the &#039;Green&#039; CEC notification for)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Region Specific Game Age Ratings ===&lt;br /&gt;
&lt;br /&gt;
These flags tell the 3DS the &#039;Age Rating&#039; of the software for the below regions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  START&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x2008&lt;br /&gt;
|  0x1&lt;br /&gt;
|  CERO (Japan)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2009&lt;br /&gt;
|  0x1&lt;br /&gt;
|  ESRB (USA)&lt;br /&gt;
|-&lt;br /&gt;
|  0x200A&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Reserved&lt;br /&gt;
|-&lt;br /&gt;
|  0x200B&lt;br /&gt;
|  0x1&lt;br /&gt;
|  USK (German)&lt;br /&gt;
|-&lt;br /&gt;
|  0x200C&lt;br /&gt;
|  0x1&lt;br /&gt;
|  PEGI GEN (Europe)&lt;br /&gt;
|-&lt;br /&gt;
|  0x200D&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Reserved&lt;br /&gt;
|-&lt;br /&gt;
|  0x200E&lt;br /&gt;
|  0x1&lt;br /&gt;
|  PEGI PRT (Portugal)&lt;br /&gt;
|-&lt;br /&gt;
|  0x200F&lt;br /&gt;
|  0x1&lt;br /&gt;
|  PEGI BBFC (England)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2010&lt;br /&gt;
|  0x1&lt;br /&gt;
|  COB (Australia)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2011&lt;br /&gt;
|  0x1&lt;br /&gt;
|  GRB (South Korea)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2012&lt;br /&gt;
|  0x1&lt;br /&gt;
|  CGSRR (Taiwan)&lt;br /&gt;
|-&lt;br /&gt;
|  0x2013&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Reserved&lt;br /&gt;
|-&lt;br /&gt;
|  0x2014&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Reserved&lt;br /&gt;
|-&lt;br /&gt;
|  0x2015&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Reserved&lt;br /&gt;
|-&lt;br /&gt;
|  0x2016&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Reserved&lt;br /&gt;
|-&lt;br /&gt;
|  0x2017&lt;br /&gt;
|  0x1&lt;br /&gt;
|  Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Active ratings have a bitmask of 0x80, and inactive ratings have no bitmask at all. Ratings without the 0x80 bitmask are ignored. 0x40 bitmask indicates Rating Pending. 0x20 bitmask indicates No Age Restriction.&lt;br /&gt;
Age limits are set by adding the minimal age to 0x80 (for example, limiting to 12 years and up would give a bitmask of 0x8C)&lt;br /&gt;
&lt;br /&gt;
=== Region Lockout ===&lt;br /&gt;
&lt;br /&gt;
This u32 flag is what the Home Menu uses to determine the [[Home Menu#Region Lockout|Region Lockout]] of a title.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  REGION&lt;br /&gt;
!  BITMASK&lt;br /&gt;
|-&lt;br /&gt;
|  Japan&lt;br /&gt;
|  0x01&lt;br /&gt;
|-&lt;br /&gt;
|  North America&lt;br /&gt;
|  0x02 &lt;br /&gt;
|-&lt;br /&gt;
|  Europe&lt;br /&gt;
|  0x04 &lt;br /&gt;
|-&lt;br /&gt;
|  Australia&lt;br /&gt;
|  0x08 &lt;br /&gt;
|-&lt;br /&gt;
|  China&lt;br /&gt;
|  0x10 &lt;br /&gt;
|-&lt;br /&gt;
|  Korea&lt;br /&gt;
|  0x20 &lt;br /&gt;
|-&lt;br /&gt;
|  Taiwan &lt;br /&gt;
|  0x40 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Regions are &#039;included&#039; in region lock by setting their bitmask value. Nintendo defines region free as 0x7fffffff. Early in the 3DS&#039; development, Nintendo grouped the Australian and Europe markets together. Nintendo defines market Europe as having the combined bitmasks of Europe and Australia. No 3DS&#039; which check the Australia bitmask have been seen (Australia uses the European 3DS model).&lt;br /&gt;
&lt;br /&gt;
=== Match Maker IDs ===&lt;br /&gt;
&lt;br /&gt;
These IDs are an application&#039;s online gaming IDs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  START&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x201C&lt;br /&gt;
|  0x4&lt;br /&gt;
|  Match Maker ID&lt;br /&gt;
|- &lt;br /&gt;
|  0x2020&lt;br /&gt;
|  0x8&lt;br /&gt;
|  Match Maker BIT ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
The u32 is used for storing flags as bit-masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  FLAG&lt;br /&gt;
!  BITMASK VALUE&lt;br /&gt;
|-&lt;br /&gt;
|  Visibility Flag (Required for visibility on the Home Menu)&lt;br /&gt;
|  0x0001&lt;br /&gt;
|-&lt;br /&gt;
|  [[Home Menu#Auto-Boot Kiosk Function|Auto-boot]] this gamecard title&lt;br /&gt;
|  0x0002&lt;br /&gt;
|-&lt;br /&gt;
|  Allow use of 3D? (For use with parental Controls. An application can use the 3D affect, even when this flag isn&#039;t set)&lt;br /&gt;
|  0x0004&lt;br /&gt;
|-&lt;br /&gt;
|  Require accepting CTR EULA before being launched by Home (see below)&lt;br /&gt;
|  0x0008&lt;br /&gt;
|-&lt;br /&gt;
|  Autosave on exit? (see below)&lt;br /&gt;
|  0x0010&lt;br /&gt;
|-&lt;br /&gt;
|  Uses an [[Extended Banner]]?&lt;br /&gt;
|  0x0020&lt;br /&gt;
|-&lt;br /&gt;
|  [[SMDH#Region Specific Game Age Ratings|Region game rating]] required&lt;br /&gt;
|  0x0040&lt;br /&gt;
|-&lt;br /&gt;
|  Uses save data? (see below)&lt;br /&gt;
|  0x0080&lt;br /&gt;
|-&lt;br /&gt;
|  Application usage is to be recorded. If this is not set, it causes the application&#039;s usage to be omitted from the Home Menu&#039;s [[Home_Menu#Cache.dat &amp;amp; CacheD.dat|icon cache]], as well as in [[????????|other places]].&lt;br /&gt;
|  0x0100&lt;br /&gt;
|-&lt;br /&gt;
|  Disables [[SD Savedata Backups]] for this title. This is in addition to [[NS CFA|the blacklist]].&lt;br /&gt;
|  0x0400&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Effect of SaveData and AutoSave====&lt;br /&gt;
&lt;br /&gt;
These options have no effect on the performance of the application itself: they&#039;re used to select an appropriate warning when closing an application from [[Home Menu|Home]].&lt;br /&gt;
&lt;br /&gt;
* Both off: &amp;quot;Closing software&amp;quot; (no warning if quitting directly with X)&lt;br /&gt;
* SaveData: &amp;quot;Do you want to close [...]? (Unsaved data will be lost.)&amp;quot;&lt;br /&gt;
* AutoSave: ?&lt;br /&gt;
* Both on:  &amp;quot;Saving data and closing software...&amp;quot; (no warning if quitting directly with X)&lt;br /&gt;
&lt;br /&gt;
=== EULA Version ===&lt;br /&gt;
This is the EULA version which is checked when the Accept EULA flag is set, the version is compared to one stored in the 3DS. If the SMDH version is greater, then the user will be prompted to accept the EULA.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  START&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x202C&lt;br /&gt;
|  0x01&lt;br /&gt;
|  EULA Version Minor&lt;br /&gt;
|-&lt;br /&gt;
|  0x202D&lt;br /&gt;
|  0x01&lt;br /&gt;
|  EULA Version Major&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &#039;Optimal Animation Default Frame&#039; (for BNR) ===&lt;br /&gt;
&lt;br /&gt;
This is a float, indicating the preferred (or &#039;most representative&#039;) frame for the banner animation.&lt;br /&gt;
&lt;br /&gt;
=== CEC (StreetPass) ID ===&lt;br /&gt;
&lt;br /&gt;
This u32 represents the application CEC ID. This is likely loaded by applications for use with the CEC services as well.&lt;br /&gt;
&lt;br /&gt;
== Icon graphics ==&lt;br /&gt;
&lt;br /&gt;
At offset 0x2040, there are two icons:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  START&lt;br /&gt;
!  SIZE&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  0x2040&lt;br /&gt;
|  0x480&lt;br /&gt;
|  Small - 24x24 (shown on top screen when pausing the app)&lt;br /&gt;
|- &lt;br /&gt;
|  0x24C0&lt;br /&gt;
|  0x1200 &lt;br /&gt;
|  Large - 48x48 icon (the general icon)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Both of the icons are encoded in RGB565 meaning 16bpp. Although both icons are known to be RGB565, developers have the option of encoding icons (and banners) with the following encodings :&lt;br /&gt;
&lt;br /&gt;
* RGBA8&lt;br /&gt;
* RGB8&lt;br /&gt;
* RGBA5551&lt;br /&gt;
* RGB565&lt;br /&gt;
* RGBA4&lt;br /&gt;
* LA8&lt;br /&gt;
* HILO8&lt;br /&gt;
* L8&lt;br /&gt;
* A8&lt;br /&gt;
* LA4&lt;br /&gt;
* L4&lt;br /&gt;
* ETC1&lt;br /&gt;
* ETC1A4&lt;br /&gt;
&lt;br /&gt;
This does not necessarily mean the other encodings will be used, it is just that those are the options when compiling. Like we&#039;ve seen with Super Mario 3D Land Nintendo has changed save file encryption, and likewise they can encode icons and banners differently &#039;&#039;should they choose to&#039;&#039;. Currently we&#039;ve seen just RGB565 so don&#039;t be fooled if an icon doesn&#039;t show up right! It is probably one of these formats above. Although we will probably not see other formats used for a while it&#039;s nice to know they have an opportunity to change.&lt;br /&gt;
&lt;br /&gt;
The data is encoded in tiles (starting from size 8x8, continuing recursively).&lt;br /&gt;
&lt;br /&gt;
If the buffer is like this:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  0&lt;br /&gt;
!  1&lt;br /&gt;
!  2&lt;br /&gt;
!  3&lt;br /&gt;
!  4&lt;br /&gt;
!  5&lt;br /&gt;
!  6&lt;br /&gt;
!  7&lt;br /&gt;
!  8&lt;br /&gt;
!  9&lt;br /&gt;
!  10&lt;br /&gt;
!  11&lt;br /&gt;
!  12&lt;br /&gt;
!  13&lt;br /&gt;
!  14&lt;br /&gt;
!  15&lt;br /&gt;
!  16&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Then the image would look like this:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  x=0&lt;br /&gt;
!  x=1&lt;br /&gt;
!  x=2&lt;br /&gt;
!  x=3&lt;br /&gt;
!  x=4&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 4&lt;br /&gt;
| 5&lt;br /&gt;
| 16&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
| 6&lt;br /&gt;
| 7&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 9&lt;br /&gt;
| 12&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 11&lt;br /&gt;
| 14&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
[[CiTRUS]] - (GUI)(Windows Only) Generating ICN files&lt;br /&gt;
&lt;br /&gt;
[[3DSExplorer]] - (GUI)(Windows Only) Parsing ICN files&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=17534</id>
		<title>3DS Userland Flaws</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=17534"/>
		<updated>2016-06-16T13:42:38Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Useless crashes / applications which were fuzzed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists vulnerabilities / exploits for 3DS applications and applets. Exploiting these initially results in ROP, from that ROP one can then for example try exploiting [[3DS_System_Flaws|system]] flaw(s).&lt;br /&gt;
&lt;br /&gt;
=Non-system applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Application name&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in app/system version&lt;br /&gt;
!  Last app/system version this flaw was checked for&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this vuln was discovered&lt;br /&gt;
!  Vuln discovered by&lt;br /&gt;
|-&lt;br /&gt;
| Cubic Ninja&lt;br /&gt;
| Map-data stack smash&lt;br /&gt;
| See [[Ninjhax|here]] regarding Ninjhax.&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.4.0-29]].&lt;br /&gt;
| Ninjhax release&lt;br /&gt;
| July 2014&lt;br /&gt;
| [[User:smea|smea]]&lt;br /&gt;
|-&lt;br /&gt;
| The Legend of Zelda: Ocarina of Time 3D&lt;br /&gt;
| UTF-16 name string buffer overflow via unchecked u8 length field&lt;br /&gt;
| The u8 at offset 0x2C in the savefile is the character-length of the UTF-16 string at offset 0x1C. When copying this string, it&#039;s essentially a memory-copy with lenval*2, not a string-copy. This can be used to trigger buffer overflows at various locations depending on the string length.&lt;br /&gt;
* When value is &amp;gt;=0x6E it crashes when saving the saveslot, this causes a stack-smash however it normally crashes before it returns from the function which had the stack-frame overwritten.&lt;br /&gt;
* With value &amp;gt;=0x9A, it crashes via stack-smash in-game once any dialogs are opened(touching buttons on the touch-screen can trigger it too).&lt;br /&gt;
* Length value&amp;gt;=0xCD causes a crash while loading the saveslot, via a heap buffer overflow. This buf-overflow overwrites a heap memchunk following the allocated buffer. When the first 16-bits overwriting that heap memchunk is not the memchunk magic-number(0x7373), the mem-alloc code will just return a NULL ptr which later results in a crash. When the magic-number is valid, the mem-alloc code will continue to attempt to parse the memchunk, which may crash depending on the data which overwrote the memchunk. This heap code is separate from the CTRSDK heap code. Exploiting this doesn&#039;t seem to be possible: since the heap code actually verifies that the magic-number for the next/prev memchunk ptrs are correct(unlike CTRSDK), it&#039;s not possible to change those ptrs to useful arbitrary addresses outside of savedata(like with triggering a write to a c++ object ptr which later is used with a vtable func-call, this is what one would do with CTRSDK heap here).&lt;br /&gt;
&lt;br /&gt;
On March 11, 2015, an exploit using this vuln was released, that one was intended for warez/etc. The following exploit wasn&#039;t released before then mainly because doing so would (presumably) result in the vuln being fixed. The following old exploit was released on March 14, 2015: [https://github.com/yellows8/oot3dhax].&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.6.0-31]].&lt;br /&gt;
| March 11, 2015&lt;br /&gt;
| Around October 22, 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Super Smash Bros 3DS&lt;br /&gt;
| Buffer overflow in local-multiplayer beacon handling.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| App: v1.1.3&lt;br /&gt;
| See [[smashbroshax|here]]. System: [[10.3.0-28]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Super Mystery Dungeon&lt;br /&gt;
| Heap overflow within linear memory via unchecked save file length&lt;br /&gt;
| Pokemon Super Mystery Dungeon uses zlib compression for most of its save files, possibly due to the save files being larger than it&#039;s predecessor, Gates to Infinity. When a save file is being prepared to be loaded and read from, only a 0x32000 large buffer is allocated for file reading, and a 0x3e800-large buffer for decompression is also allocated before the file is read. However, the game does not limit the size of the file read to this allocation bound, allowing for the file to overflow into the linear memory heap and into the next allocation. Since Pokemon Super Mystery Dungeon stores allocation memchunks directly before the allocation, overwriting the next memchunk with a corrupted one allows for arbitrary writes of linear heap pointers when the next buffer is allocated or arbitrary writes of any pointer within writable memory when the corrupted buffer is freed.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 14, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| VVVVVV&lt;br /&gt;
| Buffer overflow in XML save file array parsing&lt;br /&gt;
| VVVVVV utilizes several XML files (renamed with a .vvv extension) to store level save data, stats and settings. Within these XML files are several tags containing an array of data which, when parsed, is not properly checked to be of proper length for the tag being parsed from. This allows for an overflow of 16-bit array values from the location where the array is parsed. With unlock.vvv, XML data is parsed to the stack, and with level saves the heap. This allows for the pointer where the level save worldmap tag array should be parsed into to be overwritten with a stack address, allowing for ROP from within the XML array parsing function on the next level load.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 25, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| Citizens of Earth&lt;br /&gt;
| Save file read stack smash&lt;br /&gt;
| Citizens of Earth also uses &amp;quot;XML&amp;quot; files for saves, which are actually entirely binary data (not XML at all) with no checksums. These files are read from the filesystem on to a fixed size stack buffer which leads to an incredibly trivial stack smash. When using the autosave slot for this, the save is parsed when the user selects &amp;quot;continue&amp;quot;. When using one of the dedicated save slots (1-3), the save is parsed shortly after the company splash screens fade. Note that the save is read quite high (descending) on the stack - when exploiting this, one would likely need to move SP due to almost instantly overflowing the physical stack.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| May 5, 2016&lt;br /&gt;
| [[User:Dazzozo|Dazzozo]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Useless crashes / applications which were fuzzed==&lt;br /&gt;
* Pushmo (3DSWare), QR codes: level name is properly limited to 16 characters, game doesn&#039;t crash with a longer name. The only possible crashes are triggered by out-of-bounds array index values, these crashes are not exploitable due to the index value being 8bit.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/yellows8/mm3d_re The Legend of Zelda: Majora&#039;s Mask 3D]&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;The Legend of Zelda: A Link Between Worlds&amp;quot; and &amp;quot;The Legend of Zelda: Tri Force Heroes&amp;quot;: these games don&#039;t crash at all when the entire save-file(minus constant header data) is overwritten with /dev/random output / 0xFF-bytes. All of the CRC32s were updated for this of course.&lt;br /&gt;
&lt;br /&gt;
* Pokemon Mystery Dungeon: Gates to Infinity has the same unchecked file bounds as Pokemon Super Mystery Dungeon, however since save compression was introduced in Pokemon Super Mystery Dungeon, it only allocates one buffer within the application heap instead of several within the linear heap, resulting in nothing to corrupt or overwrite even if the file&#039;s length is extended past it&#039;s allocation.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Kid Icarus: Uprising&amp;quot;: Overwriting the entire savedata results in various crashes, nothing useful.&lt;br /&gt;
&lt;br /&gt;
* Savedata/extdata for &amp;quot;Super Smash Bros 3DS&amp;quot;: Overwriting the various files stored under savedata/extdata results in useless crashes.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;StarFox 64 3D&amp;quot;: Doesn&#039;t crash at all with the entire savedata overwritten.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Frogger 3D&amp;quot;: Overwriting a savefile with random-data results in *nothing* crashing.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mutant Mudds&amp;quot;: Overwriting the savefile with anything else than 0x00 results in the console rebooting&lt;br /&gt;
&lt;br /&gt;
==Crashes needing investigation==&lt;br /&gt;
* Disney Infinity crashes when all savedata overwritten with /dev/urandom. No checksums. 0xFF bytes don&#039;t cause a crash.&lt;br /&gt;
&lt;br /&gt;
* Football Up Online / Soccer Up Online and Football Up 3D / Soccer Up 3D crash when teamname(UTF-16) length = 0x48 AND 0x20 null bytes are removed after just the name or if teamname length is way longer than 0x48.&lt;br /&gt;
&lt;br /&gt;
=System applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| 3DS [[System Settings]] DS profile string stack-smash&lt;br /&gt;
| Too long or corrupted strings (01Ah  2   Nickname length in characters     050h  2   Message length in characters) in the NVRAM DS user settings (System Settings-&amp;gt;Other Settings-&amp;gt;Profile-&amp;gt;Nintendo DS Profile) cause it to crash in 3DS-mode due to a stack-smash. The DSi is not vulnerable to this, DSi launcher(menu) and DSi System Settings will reset the NVRAM user-settings if the length field values are too long(same result as when the CRCs are invalid). TWL_FIRM also resets the NVRAM user-settings when the string-length(s) are too long.&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Ichfly|Ichfly]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=System applets=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Introduced with version&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] [[System_SaveData|NAND-savedata]] Launcher.dat icons&lt;br /&gt;
| The homemenu code processing the titleid list @ launcherdat+8 copies those titleIDs to another buffer, where the offset relative to that buffer is calculated using the corresponding s8/s16 entries. Those two values are not range checked at all. Hence, one can use this to write u64(s) with arbitrary values to before/after this allocated output buffer. See [[Home_Menu|here]] regarding Launcher.dat structure.&lt;br /&gt;
&lt;br /&gt;
This can be exploited(with Launcher.dat loading at startup at least) by using a s16 for the icon entry with value 0xFFEC(-20)(and perhaps more icons with similar s16 values to write multiple u64s). The result is that the u64 value is written to outbuf-0xA0, which overwrites object+0(vtable) and object+4(doesn&#039;t matter here) for an object that gets used a bit after the vulnerable function triggers. The low 32bits of the u64 can then be set to the address of controlled memory(either outbuf in regular heap or the entire launcherdat buffer in linearmem), for use as a fake vtable in order to get control of PC. From there one can begin ROP via vtable funcptrs to do a stack-pivot(r4=objectaddr at the time the above object gets used).&lt;br /&gt;
&lt;br /&gt;
Originally this vuln could only be triggered via Launcher.dat at Home Menu startup, right after Launcher.dat gets loaded + memory gets allocated, once the file-format version code is finished running. Starting with v9.6 this can be triggered when loading layouts from SD extdata as well. The vuln itself triggers before the layout data is written to Launcher.dat, but it doesn&#039;t seem to be possible to overwrite anything which actually gets used before the function which writes Launcher.dat into the layout gets called.&lt;br /&gt;
&lt;br /&gt;
Home Menu has some sort of fail-safe system(or at least on v9.7) when Home Menu crashes due to Launcher.dat(this also applies for other things with Home Menu): after crashing once, Home Menu resets Launcher.dat to a state where it no longer crashes anymore. However, note that any exploits using this which hang/etc without crashing will still brick the system. &#039;&#039;&#039;Hence, attempting anything with this on physnand without hw-nand-access isn&#039;t really recommended.&#039;&#039;&#039;&lt;br /&gt;
| None&lt;br /&gt;
| [[10.3.0-28|10.3.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| May 14, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] theme-data decompression buffer overflow ([[menuhax|themehax]])&lt;br /&gt;
| The only func-call size parameter used by the theme decompression function is one for the compressed size, none for the decompressed size. The decompressed-size value from the LZ header is used by this function to check when to stop decompressing, but this function itself has nothing to verify the decompressed_size with. The code calling this function does not check or even use the decompressed size from the header either.&lt;br /&gt;
&lt;br /&gt;
This function is separate from the rest of the Home Menu code: the function used for decompressing themes is *only* used for decompressing themes, nothing else. There&#039;s a separate decompression function in Home Menu used for decompressing everything else.&lt;br /&gt;
&lt;br /&gt;
That other decompression function in Home Menu handles decompression size properly(decompressed size check for max buffer size is done by code calling the other function, not in the function itself). Unlike the other function, the theme function supports multiple LZ algorithms, but the one which actually gets used in official themes is the same one supported by the other function anyway.&lt;br /&gt;
&lt;br /&gt;
See also [[menuhax|here]].&lt;br /&gt;
&lt;br /&gt;
With [[10.2.0-28|10.2.0-X]] Home Menu, the only code change was that the following was added right after theme-load and before actual decompression: &amp;quot;if(&amp;lt;get_lzheader_decompressed_size&amp;gt;(compressed_buf) &amp;gt; 0x150000)&amp;lt;exit&amp;gt;;&amp;quot;. This fixed the vuln.&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| &amp;lt;Old3DS/New3DS version which added initial theme support&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| December 22, 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]], [[User:Myria|Myria]] independently (~spring 2015)&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] shuffle body-data buffer overflow ([[menuhax|shufflehax]])&lt;br /&gt;
| See [[menuhax|here]].&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| January 3, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] extdata SaveData.dat loading buffer overflow&lt;br /&gt;
| &#039;&#039;This was not tested on hardware.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The extdata SaveData.dat file-reading code allocates a fixed-size heap buffer for the expected SaveData.dat filesize, then reads the filedata into this buffer using the actual FS filesize. Before v5.0 the filesize used here wasn&#039;t validated, hence if the filesize is larger than alloc_size a buffer overflow would occur. &#039;&#039;After&#039;&#039; doing the file-read it does validate that the actual_readsize matches the alloc_size, but at this point the buffer overflow has already occurred.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown whether v5.0 had similar changes for other extdata file-loading code.&lt;br /&gt;
| [[5.0.0-11|5.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Webkit/web-browser bugs&lt;br /&gt;
| spider has had at least three different code-execution exploits. Majority of them are use-after-free issues. See also [[browserhax|here]].&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 2013?&lt;br /&gt;
|&lt;br /&gt;
| A lot of people.&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS/New3DS [[Internet_Browser|Browser-version-check]] bypass&lt;br /&gt;
| When the browser-version-check code runs where the savedata for it was never initialized(such as when the user used the &amp;quot;Initialize savedata&amp;quot; option), it will use base_timestamp=0 instead of the timestamp loaded from savedata. This is then used with &amp;quot;if(cur_timestamp - base_timestamp &amp;gt;= &amp;lt;24h timestamp&amp;gt;){Run browser-version-check HTTPS request code}&amp;quot;.&lt;br /&gt;
Hence, if the savedata was just initialized, and if the system datetime is set to before January 2, 2000, the browser-version-check will be skipped. This includes January 1, 2000, 00:00, because that&#039;s the epoch(timestamp value 0x0) used with this timestamp.&lt;br /&gt;
&lt;br /&gt;
See [http://yls8.mtheall.com/3dsbrowserhax.php here] for bypass usage instructions.&lt;br /&gt;
&lt;br /&gt;
This was fixed with [[10.7.0-32|10.7.0-32]], see [[Internet_Browser|here]] for details.&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| February 25, 2016&lt;br /&gt;
| November 2, 2015 (Exactly one week after the browser version pages were initially updated server-side)&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Useless crashes==&lt;br /&gt;
Old3DS system web-browser:&lt;br /&gt;
* 2^32 characters long string(&#039;&#039;finally&#039;&#039; fixed with v10.6): this is similar to the vulnerability fixed [http://git.chromium.org/gitweb/?p=external/Webkit.git;a=commitdiff;h=ec471f16fbd1f879cb631f9b022fd16acd75f4d4 here], concat-large-strings-crash2.html triggers a crash which is about the same as the one triggered by a 2^32 string. Most of the time this vulnerability will cause a memory page permissions fault, since the WebKit code attempts to copy the string text data to the output buffer located in read-only [[CRO0|CRO]] heap memory. The only difference between a crash triggered by a 2^32 string and the concat-large-strings-crash2.html crash is at the former copies the string data using the original string length(like 1 text character for &amp;quot;x&amp;quot;, 4 for &amp;quot;xxxx&amp;quot;) while the latter attempts to copy &amp;gt;12MB. In some &#039;&#039;very&#039;&#039; rare cases a thread separate from the string data-copy thread will crash, this might be exploitable. However, this is mostly useless since it rarely crashes this way.&lt;br /&gt;
&lt;br /&gt;
* Trying to directly load a page via the browser &amp;quot;URL&amp;quot; option with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] setup, causes a crash to trigger in oss.cro due to an use-after-free being caught with webkitdebug. This is presumably some sort of realloc() issue in the libcurl version used by the &amp;lt;={v10.2-v10.3} browser. This happens with *every* *single* *page* one tries to load via the &amp;quot;URL&amp;quot; option, but not when loading links on the current page, hence this is probably useless. A different use-after-free with realloc triggers with loading any page at all regardless of method too(libcurl probably).&lt;br /&gt;
&lt;br /&gt;
* This WebKit build has &#039;&#039;a lot&#039;&#039; of crash-trigger bugs that only happen with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] completely setup(addr accesses near 0x0), with &#039;&#039;just&#039;&#039; trying to load any page at all.&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=17533</id>
		<title>3DS Userland Flaws</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=17533"/>
		<updated>2016-06-16T13:24:01Z</updated>

		<summary type="html">&lt;p&gt;LiquidFenrir: /* Useless crashes / applications which were fuzzed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists vulnerabilities / exploits for 3DS applications and applets. Exploiting these initially results in ROP, from that ROP one can then for example try exploiting [[3DS_System_Flaws|system]] flaw(s).&lt;br /&gt;
&lt;br /&gt;
=Non-system applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Application name&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in app/system version&lt;br /&gt;
!  Last app/system version this flaw was checked for&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this vuln was discovered&lt;br /&gt;
!  Vuln discovered by&lt;br /&gt;
|-&lt;br /&gt;
| Cubic Ninja&lt;br /&gt;
| Map-data stack smash&lt;br /&gt;
| See [[Ninjhax|here]] regarding Ninjhax.&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.4.0-29]].&lt;br /&gt;
| Ninjhax release&lt;br /&gt;
| July 2014&lt;br /&gt;
| [[User:smea|smea]]&lt;br /&gt;
|-&lt;br /&gt;
| The Legend of Zelda: Ocarina of Time 3D&lt;br /&gt;
| UTF-16 name string buffer overflow via unchecked u8 length field&lt;br /&gt;
| The u8 at offset 0x2C in the savefile is the character-length of the UTF-16 string at offset 0x1C. When copying this string, it&#039;s essentially a memory-copy with lenval*2, not a string-copy. This can be used to trigger buffer overflows at various locations depending on the string length.&lt;br /&gt;
* When value is &amp;gt;=0x6E it crashes when saving the saveslot, this causes a stack-smash however it normally crashes before it returns from the function which had the stack-frame overwritten.&lt;br /&gt;
* With value &amp;gt;=0x9A, it crashes via stack-smash in-game once any dialogs are opened(touching buttons on the touch-screen can trigger it too).&lt;br /&gt;
* Length value&amp;gt;=0xCD causes a crash while loading the saveslot, via a heap buffer overflow. This buf-overflow overwrites a heap memchunk following the allocated buffer. When the first 16-bits overwriting that heap memchunk is not the memchunk magic-number(0x7373), the mem-alloc code will just return a NULL ptr which later results in a crash. When the magic-number is valid, the mem-alloc code will continue to attempt to parse the memchunk, which may crash depending on the data which overwrote the memchunk. This heap code is separate from the CTRSDK heap code. Exploiting this doesn&#039;t seem to be possible: since the heap code actually verifies that the magic-number for the next/prev memchunk ptrs are correct(unlike CTRSDK), it&#039;s not possible to change those ptrs to useful arbitrary addresses outside of savedata(like with triggering a write to a c++ object ptr which later is used with a vtable func-call, this is what one would do with CTRSDK heap here).&lt;br /&gt;
&lt;br /&gt;
On March 11, 2015, an exploit using this vuln was released, that one was intended for warez/etc. The following exploit wasn&#039;t released before then mainly because doing so would (presumably) result in the vuln being fixed. The following old exploit was released on March 14, 2015: [https://github.com/yellows8/oot3dhax].&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.6.0-31]].&lt;br /&gt;
| March 11, 2015&lt;br /&gt;
| Around October 22, 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Super Smash Bros 3DS&lt;br /&gt;
| Buffer overflow in local-multiplayer beacon handling.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| App: v1.1.3&lt;br /&gt;
| See [[smashbroshax|here]]. System: [[10.3.0-28]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Super Mystery Dungeon&lt;br /&gt;
| Heap overflow within linear memory via unchecked save file length&lt;br /&gt;
| Pokemon Super Mystery Dungeon uses zlib compression for most of its save files, possibly due to the save files being larger than it&#039;s predecessor, Gates to Infinity. When a save file is being prepared to be loaded and read from, only a 0x32000 large buffer is allocated for file reading, and a 0x3e800-large buffer for decompression is also allocated before the file is read. However, the game does not limit the size of the file read to this allocation bound, allowing for the file to overflow into the linear memory heap and into the next allocation. Since Pokemon Super Mystery Dungeon stores allocation memchunks directly before the allocation, overwriting the next memchunk with a corrupted one allows for arbitrary writes of linear heap pointers when the next buffer is allocated or arbitrary writes of any pointer within writable memory when the corrupted buffer is freed.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 14, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| VVVVVV&lt;br /&gt;
| Buffer overflow in XML save file array parsing&lt;br /&gt;
| VVVVVV utilizes several XML files (renamed with a .vvv extension) to store level save data, stats and settings. Within these XML files are several tags containing an array of data which, when parsed, is not properly checked to be of proper length for the tag being parsed from. This allows for an overflow of 16-bit array values from the location where the array is parsed. With unlock.vvv, XML data is parsed to the stack, and with level saves the heap. This allows for the pointer where the level save worldmap tag array should be parsed into to be overwritten with a stack address, allowing for ROP from within the XML array parsing function on the next level load.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 25, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| Citizens of Earth&lt;br /&gt;
| Save file read stack smash&lt;br /&gt;
| Citizens of Earth also uses &amp;quot;XML&amp;quot; files for saves, which are actually entirely binary data (not XML at all) with no checksums. These files are read from the filesystem on to a fixed size stack buffer which leads to an incredibly trivial stack smash. When using the autosave slot for this, the save is parsed when the user selects &amp;quot;continue&amp;quot;. When using one of the dedicated save slots (1-3), the save is parsed shortly after the company splash screens fade. Note that the save is read quite high (descending) on the stack - when exploiting this, one would likely need to move SP due to almost instantly overflowing the physical stack.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| May 5, 2016&lt;br /&gt;
| [[User:Dazzozo|Dazzozo]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Useless crashes / applications which were fuzzed==&lt;br /&gt;
* Pushmo (3DSWare), QR codes: level name is properly limited to 16 characters, game doesn&#039;t crash with a longer name. The only possible crashes are triggered by out-of-bounds array index values, these crashes are not exploitable due to the index value being 8bit.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/yellows8/mm3d_re The Legend of Zelda: Majora&#039;s Mask 3D]&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;The Legend of Zelda: A Link Between Worlds&amp;quot; and &amp;quot;The Legend of Zelda: Tri Force Heroes&amp;quot;: these games don&#039;t crash at all when the entire save-file(minus constant header data) is overwritten with /dev/random output / 0xFF-bytes. All of the CRC32s were updated for this of course.&lt;br /&gt;
&lt;br /&gt;
* Pokemon Mystery Dungeon: Gates to Infinity has the same unchecked file bounds as Pokemon Super Mystery Dungeon, however since save compression was introduced in Pokemon Super Mystery Dungeon, it only allocates one buffer within the application heap instead of several within the linear heap, resulting in nothing to corrupt or overwrite even if the file&#039;s length is extended past it&#039;s allocation.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Kid Icarus: Uprising&amp;quot;: Overwriting the entire savedata results in various crashes, nothing useful.&lt;br /&gt;
&lt;br /&gt;
* Savedata/extdata for &amp;quot;Super Smash Bros 3DS&amp;quot;: Overwriting the various files stored under savedata/extdata results in useless crashes.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;StarFox 64 3D&amp;quot;: Doesn&#039;t crash at all with the entire savedata overwritten.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Frogger 3D&amp;quot;: Overwriting a savefile with random-data results in *nothing* crashing.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mutant Mudds&amp;quot;: Overwriting the savefile with random-data or filling it with anything else than 0x00 results in the console rebooting&lt;br /&gt;
&lt;br /&gt;
==Crashes needing investigation==&lt;br /&gt;
* Disney Infinity crashes when all savedata overwritten with /dev/urandom. No checksums. 0xFF bytes don&#039;t cause a crash.&lt;br /&gt;
&lt;br /&gt;
* Football Up Online / Soccer Up Online and Football Up 3D / Soccer Up 3D crash when teamname(UTF-16) length = 0x48 AND 0x20 null bytes are removed after just the name or if teamname length is way longer than 0x48.&lt;br /&gt;
&lt;br /&gt;
=System applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| 3DS [[System Settings]] DS profile string stack-smash&lt;br /&gt;
| Too long or corrupted strings (01Ah  2   Nickname length in characters     050h  2   Message length in characters) in the NVRAM DS user settings (System Settings-&amp;gt;Other Settings-&amp;gt;Profile-&amp;gt;Nintendo DS Profile) cause it to crash in 3DS-mode due to a stack-smash. The DSi is not vulnerable to this, DSi launcher(menu) and DSi System Settings will reset the NVRAM user-settings if the length field values are too long(same result as when the CRCs are invalid). TWL_FIRM also resets the NVRAM user-settings when the string-length(s) are too long.&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Ichfly|Ichfly]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=System applets=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Introduced with version&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] [[System_SaveData|NAND-savedata]] Launcher.dat icons&lt;br /&gt;
| The homemenu code processing the titleid list @ launcherdat+8 copies those titleIDs to another buffer, where the offset relative to that buffer is calculated using the corresponding s8/s16 entries. Those two values are not range checked at all. Hence, one can use this to write u64(s) with arbitrary values to before/after this allocated output buffer. See [[Home_Menu|here]] regarding Launcher.dat structure.&lt;br /&gt;
&lt;br /&gt;
This can be exploited(with Launcher.dat loading at startup at least) by using a s16 for the icon entry with value 0xFFEC(-20)(and perhaps more icons with similar s16 values to write multiple u64s). The result is that the u64 value is written to outbuf-0xA0, which overwrites object+0(vtable) and object+4(doesn&#039;t matter here) for an object that gets used a bit after the vulnerable function triggers. The low 32bits of the u64 can then be set to the address of controlled memory(either outbuf in regular heap or the entire launcherdat buffer in linearmem), for use as a fake vtable in order to get control of PC. From there one can begin ROP via vtable funcptrs to do a stack-pivot(r4=objectaddr at the time the above object gets used).&lt;br /&gt;
&lt;br /&gt;
Originally this vuln could only be triggered via Launcher.dat at Home Menu startup, right after Launcher.dat gets loaded + memory gets allocated, once the file-format version code is finished running. Starting with v9.6 this can be triggered when loading layouts from SD extdata as well. The vuln itself triggers before the layout data is written to Launcher.dat, but it doesn&#039;t seem to be possible to overwrite anything which actually gets used before the function which writes Launcher.dat into the layout gets called.&lt;br /&gt;
&lt;br /&gt;
Home Menu has some sort of fail-safe system(or at least on v9.7) when Home Menu crashes due to Launcher.dat(this also applies for other things with Home Menu): after crashing once, Home Menu resets Launcher.dat to a state where it no longer crashes anymore. However, note that any exploits using this which hang/etc without crashing will still brick the system. &#039;&#039;&#039;Hence, attempting anything with this on physnand without hw-nand-access isn&#039;t really recommended.&#039;&#039;&#039;&lt;br /&gt;
| None&lt;br /&gt;
| [[10.3.0-28|10.3.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| May 14, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] theme-data decompression buffer overflow ([[menuhax|themehax]])&lt;br /&gt;
| The only func-call size parameter used by the theme decompression function is one for the compressed size, none for the decompressed size. The decompressed-size value from the LZ header is used by this function to check when to stop decompressing, but this function itself has nothing to verify the decompressed_size with. The code calling this function does not check or even use the decompressed size from the header either.&lt;br /&gt;
&lt;br /&gt;
This function is separate from the rest of the Home Menu code: the function used for decompressing themes is *only* used for decompressing themes, nothing else. There&#039;s a separate decompression function in Home Menu used for decompressing everything else.&lt;br /&gt;
&lt;br /&gt;
That other decompression function in Home Menu handles decompression size properly(decompressed size check for max buffer size is done by code calling the other function, not in the function itself). Unlike the other function, the theme function supports multiple LZ algorithms, but the one which actually gets used in official themes is the same one supported by the other function anyway.&lt;br /&gt;
&lt;br /&gt;
See also [[menuhax|here]].&lt;br /&gt;
&lt;br /&gt;
With [[10.2.0-28|10.2.0-X]] Home Menu, the only code change was that the following was added right after theme-load and before actual decompression: &amp;quot;if(&amp;lt;get_lzheader_decompressed_size&amp;gt;(compressed_buf) &amp;gt; 0x150000)&amp;lt;exit&amp;gt;;&amp;quot;. This fixed the vuln.&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| &amp;lt;Old3DS/New3DS version which added initial theme support&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| December 22, 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]], [[User:Myria|Myria]] independently (~spring 2015)&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] shuffle body-data buffer overflow ([[menuhax|shufflehax]])&lt;br /&gt;
| See [[menuhax|here]].&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| January 3, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Home Menu]] extdata SaveData.dat loading buffer overflow&lt;br /&gt;
| &#039;&#039;This was not tested on hardware.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The extdata SaveData.dat file-reading code allocates a fixed-size heap buffer for the expected SaveData.dat filesize, then reads the filedata into this buffer using the actual FS filesize. Before v5.0 the filesize used here wasn&#039;t validated, hence if the filesize is larger than alloc_size a buffer overflow would occur. &#039;&#039;After&#039;&#039; doing the file-read it does validate that the actual_readsize matches the alloc_size, but at this point the buffer overflow has already occurred.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown whether v5.0 had similar changes for other extdata file-loading code.&lt;br /&gt;
| [[5.0.0-11|5.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Webkit/web-browser bugs&lt;br /&gt;
| spider has had at least three different code-execution exploits. Majority of them are use-after-free issues. See also [[browserhax|here]].&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 2013?&lt;br /&gt;
|&lt;br /&gt;
| A lot of people.&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS/New3DS [[Internet_Browser|Browser-version-check]] bypass&lt;br /&gt;
| When the browser-version-check code runs where the savedata for it was never initialized(such as when the user used the &amp;quot;Initialize savedata&amp;quot; option), it will use base_timestamp=0 instead of the timestamp loaded from savedata. This is then used with &amp;quot;if(cur_timestamp - base_timestamp &amp;gt;= &amp;lt;24h timestamp&amp;gt;){Run browser-version-check HTTPS request code}&amp;quot;.&lt;br /&gt;
Hence, if the savedata was just initialized, and if the system datetime is set to before January 2, 2000, the browser-version-check will be skipped. This includes January 1, 2000, 00:00, because that&#039;s the epoch(timestamp value 0x0) used with this timestamp.&lt;br /&gt;
&lt;br /&gt;
See [http://yls8.mtheall.com/3dsbrowserhax.php here] for bypass usage instructions.&lt;br /&gt;
&lt;br /&gt;
This was fixed with [[10.7.0-32|10.7.0-32]], see [[Internet_Browser|here]] for details.&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| February 25, 2016&lt;br /&gt;
| November 2, 2015 (Exactly one week after the browser version pages were initially updated server-side)&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Useless crashes==&lt;br /&gt;
Old3DS system web-browser:&lt;br /&gt;
* 2^32 characters long string(&#039;&#039;finally&#039;&#039; fixed with v10.6): this is similar to the vulnerability fixed [http://git.chromium.org/gitweb/?p=external/Webkit.git;a=commitdiff;h=ec471f16fbd1f879cb631f9b022fd16acd75f4d4 here], concat-large-strings-crash2.html triggers a crash which is about the same as the one triggered by a 2^32 string. Most of the time this vulnerability will cause a memory page permissions fault, since the WebKit code attempts to copy the string text data to the output buffer located in read-only [[CRO0|CRO]] heap memory. The only difference between a crash triggered by a 2^32 string and the concat-large-strings-crash2.html crash is at the former copies the string data using the original string length(like 1 text character for &amp;quot;x&amp;quot;, 4 for &amp;quot;xxxx&amp;quot;) while the latter attempts to copy &amp;gt;12MB. In some &#039;&#039;very&#039;&#039; rare cases a thread separate from the string data-copy thread will crash, this might be exploitable. However, this is mostly useless since it rarely crashes this way.&lt;br /&gt;
&lt;br /&gt;
* Trying to directly load a page via the browser &amp;quot;URL&amp;quot; option with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] setup, causes a crash to trigger in oss.cro due to an use-after-free being caught with webkitdebug. This is presumably some sort of realloc() issue in the libcurl version used by the &amp;lt;={v10.2-v10.3} browser. This happens with *every* *single* *page* one tries to load via the &amp;quot;URL&amp;quot; option, but not when loading links on the current page, hence this is probably useless. A different use-after-free with realloc triggers with loading any page at all regardless of method too(libcurl probably).&lt;br /&gt;
&lt;br /&gt;
* This WebKit build has &#039;&#039;a lot&#039;&#039; of crash-trigger bugs that only happen with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] completely setup(addr accesses near 0x0), with &#039;&#039;just&#039;&#039; trying to load any page at all.&lt;/div&gt;</summary>
		<author><name>LiquidFenrir</name></author>
	</entry>
</feed>