<?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=MrCheeze</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=MrCheeze"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/MrCheeze"/>
	<updated>2026-04-13T03:33:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Mii_Maker&amp;diff=11464</id>
		<title>Mii Maker</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Mii_Maker&amp;diff=11464"/>
		<updated>2015-01-15T20:30:53Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: /* Mii QR Code format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Mii Maker&#039;&#039;&#039; lets you create Miis, like Wii Mii Channel. Here you can transfer Miis over [[NWM_Services|local-WLAN]] from other systems running Mii Maker(3DS/Wii U), or from Wii Mii Channel. 3DS Miis can&#039;t be transfered to Wii Mii Channel, only from Wii.&lt;br /&gt;
&lt;br /&gt;
== Wii Mii Channel transfer protocol ==&lt;br /&gt;
&lt;br /&gt;
The Wii beacons are similar to the usual multi-cart NDS beacons, except: beacon_type is zero, and payload size is 0x14. The payload data is just the Wii UTF-16 nickname, with some extra unused zero data. The usual multi-cast NDS protocol is used for sending the 3DS nick to the Wii. After many keep-alive frames, it eventually sends a bunch of frames, each containing the whole Mii. There&#039;s a 6-byte header, followed by [http://wiibrew.org/wiki/Wiimote/Mii_Data Mii data]. At the end of these frames like most NDS frames is the 0200 byte marker.&lt;br /&gt;
&lt;br /&gt;
== Mii QR Code format ==&lt;br /&gt;
&lt;br /&gt;
3DS Mii QR is a standard 57x57 pixel Level 10 High ECC QR code with &#039;Mii&#039; logo in center (refer to [http://www.denso-wave.com/qrcode Denso-Wave Inc] web site for QR Code format specifications). It contains 0x70-bytes of binary data. 3DS seems to have a fully implemented QR-code decoder, as it can interpret such Mii binary data being encoded even in the smallest possible for that data size Level 6 Low ECC QR code.&lt;br /&gt;
&lt;br /&gt;
The data itself is encrypted with AES-CCM, xorpads can be determined from known plaintext here. The Mii Maker application uses the [[NS]] APT Wrap/Unwrap commands to encrypt/decrypt this Mii data. For the NS [[APT:Unwrap|Unwrap]] command, the Mii Maker application uses blocksize=12, noncesize=10, and inputbuffer-size=0x60. The first 8-bytes(cleartext MiiID+MAC address) in the below Mii data is the nonce used with the NS Unwrap/Wrap commands, the rest of the data at 0x8-0x5F is encrypted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! &lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Mii ID (big-endian 32-bit unsigned integer)&amp;lt;br/&amp;gt;The most significant 3 bits determine whether the Mii is Special, Foreign, or Normal [http://www.davidhawley.co.uk/special-miis-gold-pants-and-creating.aspx]&amp;lt;br/&amp;gt;time_offset = (mii_id &amp;amp; 0x0FFFFFFF) * 2;&amp;lt;br/&amp;gt;time_offset is the time the Mii was created, represented as the number of seconds since 01/01/2010 00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| High 4 octets of MAC address [http://www.adminsub.net/mac-address-finder/nintendo]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown, the encrypted data begins here.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x1&lt;br /&gt;
| Allow Copying&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 0xE&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x2&lt;br /&gt;
| Bit-mapped: Birthday (4bit-day,5bit-month), Sex, Shirt, ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| 0x14&lt;br /&gt;
| UTF-16 Mii Name (10 chars max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E&lt;br /&gt;
| 0x2&lt;br /&gt;
| width &amp;amp; height&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0: disable sharing&amp;lt;br/&amp;gt;bit 1-4: face shape&amp;lt;br/&amp;gt;bit 5-7: skin color&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-3: wrinkles&amp;lt;br/&amp;gt;bit 4-7: makeup&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| 0x1&lt;br /&gt;
| hair style&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-2: hair color&amp;lt;br/&amp;gt;bit 3: flip hair&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-4: eyebrow style&amp;lt;br/&amp;gt;bit 5-7: eyebrow color&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-3: eyebrow scale&amp;lt;br/&amp;gt;bit 4-6: eyebrow yscale&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A&lt;br /&gt;
| 0x2&lt;br /&gt;
| note that the bytes are swapped over (little-endian layout)&amp;lt;br/&amp;gt;bit 0-3: eyebrow rotation&amp;lt;br/&amp;gt;bit 5-8: eyebrow x spacing&amp;lt;br/&amp;gt;bit 9-13: eyebrow y position&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x1&lt;br /&gt;
| Allow Copying&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D&lt;br /&gt;
| 0x3&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x1&lt;br /&gt;
| Mii Sharing Value&lt;br /&gt;
|-&lt;br /&gt;
| 0x41&lt;br /&gt;
| 0x7&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x14&lt;br /&gt;
| UTF-16 Author Name (10 chars max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x2&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5E&lt;br /&gt;
| 0x2&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x10&lt;br /&gt;
| AES-CCM MAC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* QR codes made from the same 3DS for the same Mii are use the same AES-CCM nonce (you can recreate the xorpad by xoring with known values from this table).&lt;br /&gt;
&lt;br /&gt;
== ExtData ==&lt;br /&gt;
The ExtData [[Extdata#Filesystem|File System]] for Mii Maker 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;
     └── ExBanner&lt;br /&gt;
         └── COMMON.bin&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;
|  Duplicate from Application ExeFS. Always image 00000002.&lt;br /&gt;
|  0x36c0 Bytes&lt;br /&gt;
|  [[1.0.0-0]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/MiiMakerExtdata/icon Download]&lt;br /&gt;
|-&lt;br /&gt;
|  COMMON.bin&lt;br /&gt;
|  [[Extended Banner]] for Home Menu. Always image 00000003.&lt;br /&gt;
|  0x20224 Bytes&lt;br /&gt;
|  [[1.0.0-0]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/MiiMakerExtdata/COMMON.bin Download]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Mii_Maker&amp;diff=11458</id>
		<title>Mii Maker</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Mii_Maker&amp;diff=11458"/>
		<updated>2015-01-15T06:32:35Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Mii Maker&#039;&#039;&#039; lets you create Miis, like Wii Mii Channel. Here you can transfer Miis over [[NWM_Services|local-WLAN]] from other systems running Mii Maker(3DS/Wii U), or from Wii Mii Channel. 3DS Miis can&#039;t be transfered to Wii Mii Channel, only from Wii.&lt;br /&gt;
&lt;br /&gt;
== Wii Mii Channel transfer protocol ==&lt;br /&gt;
&lt;br /&gt;
The Wii beacons are similar to the usual multi-cart NDS beacons, except: beacon_type is zero, and payload size is 0x14. The payload data is just the Wii UTF-16 nickname, with some extra unused zero data. The usual multi-cast NDS protocol is used for sending the 3DS nick to the Wii. After many keep-alive frames, it eventually sends a bunch of frames, each containing the whole Mii. There&#039;s a 6-byte header, followed by [http://wiibrew.org/wiki/Wiimote/Mii_Data Mii data]. At the end of these frames like most NDS frames is the 0200 byte marker.&lt;br /&gt;
&lt;br /&gt;
== Mii QR Code format ==&lt;br /&gt;
&lt;br /&gt;
3DS Mii QR is a standard 57x57 pixel Level 10 High ECC QR code with &#039;Mii&#039; logo in center (refer to [http://www.denso-wave.com/qrcode Denso-Wave Inc] web site for QR Code format specifications). It contains 0x70-bytes of binary data. 3DS seems to have a fully implemented QR-code decoder, as it can interpret such Mii binary data being encoded even in the smallest possible for that data size Level 6 Low ECC QR code.&lt;br /&gt;
&lt;br /&gt;
The data itself is encrypted with AES-CCM, xorpads can be determined from known plaintext here. The Mii Maker application uses the [[NS]] APT Wrap/Unwrap commands to encrypt/decrypt this Mii data. For the NS [[APT:Unwrap|Unwrap]] command, the Mii Maker application uses blocksize=12, noncesize=10, and inputbuffer-size=0x60. The first 8-bytes(cleartext MiiID+MAC address) in the below Mii data is the nonce used with the NS Unwrap/Wrap commands, the rest of the data at 0x8-0x5F is encrypted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! &lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Mii ID (big-endian 32-bit unsigned integer)&amp;lt;br/&amp;gt;The most significant 3 bits determine whether the Mii is Special, Foreign, or Normal [http://www.davidhawley.co.uk/special-miis-gold-pants-and-creating.aspx]&amp;lt;br/&amp;gt;time_offset = (mii_id &amp;amp; 0x0FFFFFFF) * 2;&amp;lt;br/&amp;gt;time_offset is the time the Mii was created, represented as the number of seconds since 01/01/2010 00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| High 4 octets of MAC address [http://www.adminsub.net/mac-address-finder/nintendo]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown, the encrypted data begins here.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x1&lt;br /&gt;
| Allow Copying&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 0xE&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x2&lt;br /&gt;
| Bit-mapped: Birthday (4bit-day,5bit-month), Sex, Shirt, ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| 0x14&lt;br /&gt;
| UTF-16 Mii Name (10 chars max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E&lt;br /&gt;
| 0x2&lt;br /&gt;
| width &amp;amp; height&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0: force sharing to off&amp;lt;br/&amp;gt;bit 1-4: face shape&amp;lt;br/&amp;gt;bit 5-7: skin color&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-3: wrinkles&amp;lt;br/&amp;gt;bit 4-7: makeup&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| 0x1&lt;br /&gt;
| hair style&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-2: hair color&amp;lt;br/&amp;gt;bit 3: flip hair&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-4: eyebrow style&amp;lt;br/&amp;gt;bit 5-7: eyebrow color&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| 0x1&lt;br /&gt;
| bit 0-3: eyebrow scale&amp;lt;br/&amp;gt;bit 4-6: eyebrow yscale&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A&lt;br /&gt;
| 0x2&lt;br /&gt;
| note that the bytes are swapped over (little-endian layout)&amp;lt;br/&amp;gt;bit 0-3: eyebrow rotation&amp;lt;br/&amp;gt;bit 5-8: eyebrow x spacing&amp;lt;br/&amp;gt;bit 9-13: eyebrow y position&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x1&lt;br /&gt;
| Allow Copying&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D&lt;br /&gt;
| 0x3&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x1&lt;br /&gt;
| Mii Sharing Value&lt;br /&gt;
|-&lt;br /&gt;
| 0x41&lt;br /&gt;
| 0x7&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x14&lt;br /&gt;
| UTF-16 Author Name (10 chars max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x2&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5E&lt;br /&gt;
| 0x2&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x10&lt;br /&gt;
| AES-CCM MAC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* QR codes made from the same 3DS for the same Mii are use the same AES-CCM nonce (you can recreate the xorpad by xoring with known values from this table).&lt;br /&gt;
&lt;br /&gt;
== ExtData ==&lt;br /&gt;
The ExtData [[Extdata#Filesystem|File System]] for Mii Maker 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;
     └── ExBanner&lt;br /&gt;
         └── COMMON.bin&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;
|  Duplicate from Application ExeFS. Always image 00000002.&lt;br /&gt;
|  0x36c0 Bytes&lt;br /&gt;
|  [[1.0.0-0]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/MiiMakerExtdata/icon Download]&lt;br /&gt;
|-&lt;br /&gt;
|  COMMON.bin&lt;br /&gt;
|  [[Extended Banner]] for Home Menu. Always image 00000003.&lt;br /&gt;
|  0x20224 Bytes&lt;br /&gt;
|  [[1.0.0-0]]&lt;br /&gt;
|  [https://dl.dropboxusercontent.com/u/60710927/CTR/Sample/MiiMakerExtdata/COMMON.bin Download]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11442</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11442"/>
		<updated>2015-01-09T21:08:19Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen texture offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose. This block may or may not also be responsible for coloring regular icons when a texture is not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block that controls the text that appears above game icons when zoomed to the maximum level. First three bytes control background colour, next seven bytes are unknown, and the last three bytes control text colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block, related to the bottom screen icon area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block, related to the bottom screen outer area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (bottom stripes, main background colour, subtle edge glow).&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: left box shadow (subtle), background colour, border colour, icon gradient colour 1, icon gradient colour 2, pressed colour, right box shadow (subtle).&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11441</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11441"/>
		<updated>2015-01-09T20:54:38Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen texture offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose. This block may or may not also be responsible for coloring regular icons when a texture is not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block that controls the text that appears above game icons when zoomed to the maximum level. First three bytes control background colour, next eight bytes are unknown, and the last three bytes control text colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block, related to the bottom screen icon area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block, related to the bottom screen outer area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (bottom stripes, main background colour, subtle edge glow).&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: left box shadow (subtle), background colour, border colour, icon gradient colour 1, icon gradient colour 2, pressed colour, right box shadow (subtle).&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11439</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11439"/>
		<updated>2015-01-09T20:30:45Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen texture offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose. This block may or may not also be responsible for coloring regular icons when a texture is not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block, related to the bottom screen icon area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block, related to the bottom screen outer area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (bottom stripes, main background colour, subtle edge glow).&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: left box shadow (subtle), background colour, border colour, icon gradient colour 1, icon gradient colour 2, pressed colour, right box shadow (subtle).&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11431</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11431"/>
		<updated>2015-01-09T18:26:53Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen texture offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose. (Possibly also colours regular icons if they don&#039;t have a texture set?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block, related to the bottom screen icon area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block, related to the bottom screen outer area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (bottom stripes, main background colour, subtle edge glow).&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11430</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11430"/>
		<updated>2015-01-09T17:34:01Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen texture offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block, related to the bottom screen icon area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block, related to the bottom screen outer area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (bottom stripes, main background colour, subtle edge glow).&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11429</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11429"/>
		<updated>2015-01-09T17:29:29Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen texture offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block, related to the bottom screen icon area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block, related to the bottom screen outer area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (bottom stripes, main background colour, very subtle border colour).&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11428</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11428"/>
		<updated>2015-01-09T17:25:33Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen texture offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block, related to the bottom screen icon area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block, related to the bottom screen outer area. Used when the draw-type is set to solid colour. Block contains three RGB888 colours (bottom stripes, main background colour, unknown).&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11427</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11427"/>
		<updated>2015-01-09T16:43:17Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the open button on the bottom screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Block normally contains the same data as the previous field&#039;s block, and changing it does not appear to have any effect. (???)&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11425</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11425"/>
		<updated>2015-01-09T06:59:18Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11424</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11424"/>
		<updated>2015-01-09T06:57:34Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed for perspective effects).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (flipbook scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11423</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11423"/>
		<updated>2015-01-09T06:41:02Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed for perspective effects).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4 (regular scroll), 1 = texture2 (no scroll), 2 = texture3 (jerky scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 0), 3 = texture4 (slow scroll), 4 = texture3 (jerky scroll, 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1 &amp;gt; 0).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that don&#039;t scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Split into three separate 320x240 textures that it jumps through like a flipbook.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one. Used for backgrounds that scroll.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above. Used to tile the top screen in much the same way as the white squares that appear when no theme is selected.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11422</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11422"/>
		<updated>2015-01-09T06:25:33Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed for perspective effects).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11421</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11421"/>
		<updated>2015-01-09T06:25:11Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed for perspective effects).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background.&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11420</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11420"/>
		<updated>2015-01-09T06:12:29Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed for perspective effects).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background. For draw-type 2, the first five bytes are used for the same purpose and the last two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11419</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11419"/>
		<updated>2015-01-09T05:49:05Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color with textured squares, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2. If draw-type = 1, the first three bytes are the background colour, the next adjusts the background gradient (0=none, 255=fade all the way to white at the top), and the last controls the opacity of the squares that float in front of the background. For draw-type 2, the first five bytes are used for the same purpose and the last two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11418</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11418"/>
		<updated>2015-01-09T04:25:41Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color (plus optional texture, see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1 (regular scrolling speed), 1 = texture0 (no scroll), 3 = texture1 (slow scrolling speed).&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11417</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11417"/>
		<updated>2015-01-09T04:19:23Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color, 2 = solid color (plus optional texture, see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1. Also affects scrolling speed: 0 = scroll top and bottom screen in sync with each other, 1 = no scroll, 3 = scroll top screen more slowly than bottom screen for a perspective effect.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data. Length of data is either 5 or 7, depending on whether the top screen&#039;s draw type is 1 or 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type has value 2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type has value 2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11416</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11416"/>
		<updated>2015-01-09T03:48:25Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 colours that affect the cursor, as it expands and contracts. These are the border colour, main colour, unknown, and expanded glow colour.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11415</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11415"/>
		<updated>2015-01-09T03:26:41Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The first six bytes of the block contain RGB888 colours for the 3d folder model. Specifically, its shadowed and main colours, in that order. The other six bytes are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: bottom shadow, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11414</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11414"/>
		<updated>2015-01-09T03:14:36Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours that affect both the cart icon that appears for DSiWare, and the file graphic that appears in folders. In order: shine from the bottom, main colour, highlight at the top (folder icon only). The remaining four bytes are of unknown purpose.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11413</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11413"/>
		<updated>2015-01-09T02:31:08Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block. Block contains three RGB888 colours controlling the buttons on the bottom screen with arrows on them - downwards sheen, main colour, leftwards sheen. The last four bytes are of unknown use. Note that the arrows themselves are coloured by the next field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11412</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11412"/>
		<updated>2015-01-09T02:02:15Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. Block contains three RGB888 colors for the bottom screen arrows: edge colour, unpressed colour, and pressed colour. Note that this only controls the arrows themselves, not the rest of the button.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11411</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11411"/>
		<updated>2015-01-09T01:51:50Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. (RGB colors for bottom screen arrows)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block related to the background of folders. Block contains three RGB888 colours (shadow colour at the top of empty slot, background colour, border colour/shadow colour for the rest of empty slot) and one RGBA8888 (shadow/glow around folder area).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11410</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11410"/>
		<updated>2015-01-09T01:23:43Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the formats/structure of the data stored in RomFS for [[Home Menu]] DLC, for themes.&lt;br /&gt;
&lt;br /&gt;
=Control Content=&lt;br /&gt;
The control content has content-index 0. It&#039;s unknown what if any of this is Home Menu specific.&lt;br /&gt;
&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;MetaDataContentHeader.bin&amp;quot;: Unknown, size is 0x44-bytes.&lt;br /&gt;
* &amp;quot;ContentInfoArchive_&amp;lt;region&amp;gt;_&amp;lt;lang&amp;gt;.bin&amp;quot; Contains the list of &#039;&#039;all&#039;&#039; DLC content available under this DLC title(which can include DLC that&#039;s not yet accessible via the shop). &amp;lt;region&amp;gt; can be &amp;quot;USA&amp;quot;, etc. &amp;lt;lang&amp;gt;, for the US title: &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, and &amp;quot;pt&amp;quot;.&lt;br /&gt;
* &amp;quot;icons/&amp;lt;decimal_id&amp;gt;.icn&amp;quot; Contains the raw DLC icon image data, without any header. 48x48 tiled RGB565.&lt;br /&gt;
&lt;br /&gt;
ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content index - 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x0 = disabled, 0x1 = enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x40&lt;br /&gt;
| char string for the title text.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x88&lt;br /&gt;
| char string for the description text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first entry is a &amp;quot;header&amp;quot;: contentindex val=1, second word = &amp;lt;total DLC content excluding DLC control content&amp;gt;. The two strings are set to dummy text.&lt;br /&gt;
&lt;br /&gt;
=Theme Content=&lt;br /&gt;
RomFS structure:&lt;br /&gt;
* &amp;quot;bgm.bcstm&amp;quot;: Background music, see [[CSTRM|here]].&lt;br /&gt;
* &amp;quot;body_LZ.bin&amp;quot;: LZ11 compressed blob containing the rest of the theme data(graphics + optional [[BCWAV|CWAVs]]).&lt;br /&gt;
&lt;br /&gt;
=Decompressed body_LZ.bin structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (Must be 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = disable usage of bgm.bcstm, non-zero = enable usage of bgm.bcstm.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Normally zero(not used?).&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Top screen draw type: 0 = none, 1 = solid color(see below), 2 = extension of val1(see below), 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen frame type, when draw-type is 3: 0 = texture1, 1 = texture0, 3 = texture1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the top screen solid color data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Top screen texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Additional top-screen texture offset, used with draw-type val2. This is optional when using draw-type val2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;4. Bottom screen draw type: 0 = none, 1 = solid color(see below), 2 = invalid, 3 = texture.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom screen frame type, when draw-type is 3: 0 = texture4, 1 = texture2, 2 = texture3, 3 = texture4, 4 = texture3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bottom Screen Solid Color/Texture offset, see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for texture9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block. (RGB colors for bottom screen arrows)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following two fields.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;3. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x9-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xD-byte block.&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x20-byte block. Related to the colour of the back arrow in folders.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x15-byte block. The block contains seven RGB888 colours that affect the bottom bottom screen icon-resize and settings buttons. In order: box shadow (subtle), background colour, border colour, unknown, button colour, pressed colour, unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0xC-byte block. The block contains four RGB888 values, of which the first is the background colour for the &amp;quot;press to activate camera&amp;quot; overlay, and the fourth is the text colour of the same overlay. The middle two are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = enables usage of the following field.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to a 0x6-byte block. The block contains two RGB888 values: the background colour and text colour for the message that tells you how many demo uses you have remaining.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Must be &amp;lt;2. 1 = below audio data section is used, otherwise it&#039;s not used.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Audio data section size, this must be &amp;lt;=0x2DC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset for the audio data section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes, due to padding/alignment the first block of data after the header is normally located at 0xD0.&lt;br /&gt;
&lt;br /&gt;
With the solid-color data, there&#039;s 5-bytes located at the solid-color data offset. With draw-type val2, there&#039;s 7-bytes located here. The first 4-bytes located here is RGBA8888 pixel data, the rest is unknown.&lt;br /&gt;
&lt;br /&gt;
With draw-type val2, texture5 is also used(this likely isn&#039;t used for the entire top-screen). With draw-type val2, an extra texture with the same format/dimensions as texture5 can be used, when the additional texture offset field is set.&lt;br /&gt;
&lt;br /&gt;
==Frame Types==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FrameType&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Animated when pointer moved, split into 3 sections of 320*240 and displayed in the order 0 &amp;gt; 1 &amp;gt; 2 &amp;gt; 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Textures==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Color format&lt;br /&gt;
!  Texture display dimensions&lt;br /&gt;
!  Texture data dimensions&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 412x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the top-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 320x240&lt;br /&gt;
| 512x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 960x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Tiled RGB565&lt;br /&gt;
| 1008x240&lt;br /&gt;
| 1024x256&lt;br /&gt;
| This is the texture used for the bottom-screen background, when the frame-type is set for this one.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Tiled A8&lt;br /&gt;
| 64x64&lt;br /&gt;
| 64x64&lt;br /&gt;
| This is used with the top-screen when top-screen draw-type is val2, see above.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 74x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 82x64&lt;br /&gt;
| 128x64&lt;br /&gt;
| This is used for open folder&#039;s on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 36x72&lt;br /&gt;
| 64x128&lt;br /&gt;
| This is used for 48x48 icon borders on the main menu.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Tiled BGR888&lt;br /&gt;
| 25x50&lt;br /&gt;
| 32x64&lt;br /&gt;
| This is used for 24x24 icon borders on the main menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Audio data section==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| &lt;br /&gt;
| Beginning of the audio data entries.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The audio data section contains the sound effects for this theme.&lt;br /&gt;
&lt;br /&gt;
Audio data entry structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Y (see below)&lt;br /&gt;
| Additional data for CWAV 6, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| CWAV size.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8&lt;br /&gt;
| X (see below)&lt;br /&gt;
| Additional data for CWAV 4, see below.&lt;br /&gt;
|-&lt;br /&gt;
| Y + 0x8 + X&lt;br /&gt;
| &lt;br /&gt;
| [[BCWAV|CWAV]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x0, from the above entry, for the additional data with CWAV 7:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y / the size of this block, is 0x10-bytes.&lt;br /&gt;
&lt;br /&gt;
Structure of the data starting at offset 0x8, from the above entry, for the additional data with CWAV 4:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Relative offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2C&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
X / the size of this block, is 0x2C-bytes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s unknown how exactly the number of CWAVs is controlled. The CWAVs are used for the following:&lt;br /&gt;
* 0: Cursor movement&lt;br /&gt;
* 1: Application launch&lt;br /&gt;
* 2: Certain buttons&lt;br /&gt;
* 3: Cancel buttons&lt;br /&gt;
* 4: When cursor would be moved off the screen, left/right&lt;br /&gt;
* 5: When cursor is moved a screen-worth of icons across&lt;br /&gt;
* 6: Folder buttons&lt;br /&gt;
&lt;br /&gt;
=Built-in themes=&lt;br /&gt;
The built-in themes are stored at Home Menu RomFS:/theme/&amp;lt;Color&amp;gt;_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11409</id>
		<title>Home Menu/Themes</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Home_Menu/Themes&amp;diff=11409"/>
		<updated>2015-01-09T01:12:31Z</updated>

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

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

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

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

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the format and encryption of extdata, &amp;quot;extra data&amp;quot; stored on [[SD_Filesystem|SD card]] and [[Flash_Filesystem|NAND]].&lt;br /&gt;
At:&lt;br /&gt;
* nand/data/&amp;lt;ID&amp;gt;/extdata/&amp;lt;ExtdataID-High&amp;gt;&lt;br /&gt;
* sdmc/Nintendo 3DS/&amp;lt;ID0&amp;gt;/&amp;lt;ID1&amp;gt;/extdata/&amp;lt;ExtdataID-High&amp;gt; &lt;br /&gt;
&lt;br /&gt;
(ExtdataID-High is always 00000000 for SD, and always 00048000 for NAND) Some titles can have Quota.dat stored in these directories. The directory-name for these directories is the ExtdataID-Low. Then there&#039;s a sub-directory 00000000, which contains the actual extdata. Size and number of files in this dir varies per title.&lt;br /&gt;
NAND stores the shared extdata and is structured exactly the same way, see [[Flash Filesystem]].&lt;br /&gt;
&lt;br /&gt;
Extdata image 00000001 contains a VSXE partition for the FST, the actual file data is stored in the subsequent extdata images.&lt;br /&gt;
&lt;br /&gt;
Regular apps can only mount SD extdata using the same extdataID which is stored in the [[NCCH#CXI|CXI]] exheader. Therefore, regular apps which have the exheader extdataID set to zero can&#039;t use extdata. This restriction doesn&#039;t apply for shared extdata with extdataID high bitmask 0x48000 stored on NAND. System apps with a certain access right can mount arbitrary extdata.&lt;br /&gt;
All NAND extdata is shared extdata, while all SD extdata is normal extdata. Thus, normal extdata doesn&#039;t exist on NAND, and shared extdata doesn&#039;t exist on SD. The extdataID high excluding that bitmask is always zero for shared extdata.&lt;br /&gt;
&lt;br /&gt;
=== Encryption ===&lt;br /&gt;
&lt;br /&gt;
These files are [[AES|encrypted]] with AES-CTR, the keyslot is initialized by [[nand/private/movable.sed|movable.sed]]. The same keyslot is used for the NAND/SD extdata MAC. The NAND extdata images are stored in cleartext. The WCHAR LowPath &amp;quot;/extdata/&amp;lt;ExtdataIDHigh&amp;gt;/&amp;lt;ExtdataIDLow&amp;gt;/&amp;lt;PathToImage&amp;gt;&amp;quot; text path is hashed with SHA-256, including the WCHAR null-terminator. A separate hash is used for Quota.dat. The base CTR seems to be then generated by XORing the calculated hash: CTRword[i] = Hashword[i] ^ Hashword[4+i].&lt;br /&gt;
&lt;br /&gt;
The base CTR is fixed therefore the CTR never changes after each write. Thus it is possible to obtain some cleartext by XORing one file(like newly created extdata) with a newer file, where the newer file overwrote zeros in the original file with non-zero data.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
Extdata uses dual &#039;partitions&#039; of IVFC hash trees to store data. The order of data in Extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
* AES MAC&lt;br /&gt;
* DIFF Header&lt;br /&gt;
* Secondary DIFI Partition descriptor&lt;br /&gt;
* Primary DIFI Partition descriptor&lt;br /&gt;
* Secondary Partition IVFC Hash Tree&lt;br /&gt;
* Primary Partition IVFC Hash Tree&lt;br /&gt;
* DATA Partition (If applicable)&lt;br /&gt;
&lt;br /&gt;
Only one Partition is active at a given time, this is determined by the DIFF header. Normally the &#039;data&#039; contained in extdata is stored at level4 of the IVFC hash tree, and hence there are two versions of the &#039;data&#039; stored in the Extdata image (although only one is &#039;active&#039;). However if DIFI flags[0] is set, this indicates it is a DATA partition and the &#039;data&#039; is stored outside the IVFC hash tree, at a relative offset defined by the DIFI partition (in this case there will be only one version of the &#039;data&#039; stored in the Extdata image).&lt;br /&gt;
&lt;br /&gt;
==== Chain Of Trust ====&lt;br /&gt;
&lt;br /&gt;
The chain of trust in extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
* MAC verifies DIFF Header&lt;br /&gt;
* DIFF Selects and verifies via Active DIFI partition descriptor&lt;br /&gt;
* Active DIFI partition descriptor points to the location of active IVFC tree (and data if applicable), and provides the hash blob to verify Level 1 of the IVFC hash tree&lt;br /&gt;
* Each IVFC level verifies the next level, until Level 4(data).&lt;br /&gt;
&lt;br /&gt;
=== Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Title extdata contains a series of extdata images which comprise an independent file system. The first image (00000001) contains the VSXE (FST) partition, and subsequent images each containing a single file. Other extdata images, such as Quota.dat and [[Title Database|database extdata]], exist independent of a FS.&lt;br /&gt;
&lt;br /&gt;
==== VSXE ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Database Magic (&amp;quot;VSXE&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Magic Number (0x30000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 8&lt;br /&gt;
| Data Table Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| File Size, divided by the value at 0x18&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Usually 0x1000&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 4&lt;br /&gt;
| &#039;Action&#039; made on most recently mounted Extdata image&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| ID of most recently mounted Extdata image&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x100&lt;br /&gt;
| Mount path, from most recently mounted Extdata image&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Data Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x38&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| Folder Table Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Folder Table =====&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Equivalent to the Used Folder Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Equivalent to the Maximum Folder Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x20&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Folder Entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Parent Folder Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x10&lt;br /&gt;
| Folder Name (ASCII)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Previous Folder&#039;s Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Last Folder Index Entry&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Last File Index Entry&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
* The folder id/index for the current entry is related to it&#039;s position in the Folder table. The folder table is accessed like an array of 0x28 byte chunks, with the header consuming index = 0, root directory at index = 1, and the subsequent folder entries following.&lt;br /&gt;
&lt;br /&gt;
===== File Table =====&lt;br /&gt;
&lt;br /&gt;
The location of the File table is calculated by aligning the end offset of the folder table to 0x1000 bytes.&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Equivalent to the Used File Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Equivalent to the Maximum File Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x28&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Folder Entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Parent Folder Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x10&lt;br /&gt;
| File Name (ASCII)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Previous File&#039;s Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unique Extdata ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
* The file id/index for the current entry is related to it&#039;s position in the File Table, much like the folder entries in the Folder Table. The file table is accessed like an array of 0x30 byte chunks, with the header consuming index = 0, and the subsequent file entries following. The relationship between the index value of the file entry, and the actual file name of the extdata image that contains it it = index+1. For instance icon (the only file in every extdata), comes right after the header, with an index value of &#039;1&#039;, and the icon is stored in extdata image &#039;00000002&#039;.&lt;br /&gt;
&lt;br /&gt;
* The Unique Extdata ID, is the same value found in the DIFF header of the referenced extdata image for that file. The value changes most times the file in question is modified. When mounting an extdata image in the VSXE filesystem, if the file&#039;s extdata image doesn&#039;t have the expected Unique Extdata ID, it won&#039;t be mounted.&lt;br /&gt;
&lt;br /&gt;
==== VSXE Filesystem structure ====&lt;br /&gt;
&lt;br /&gt;
When extdata is created, these are *always* created regardless of whether the title actually uses them.&lt;br /&gt;
&lt;br /&gt;
* /icon This file contains the extdata [[SMDH|icon]] displayed in data management. This icon can only be written to by titles when creating extdata, titles would have to recreate extdata to change the icon. This file can&#039;t be read directly, instead it is read via [[FS:ReadExtSaveDataIcon]].&lt;br /&gt;
* /user/ Contains the title&#039;s actual extdata files.&lt;br /&gt;
* /boss/ Can contain [[SpotPass]] content. SpotPass content can only be downloaded to this /boss directory.&lt;br /&gt;
&lt;br /&gt;
User extdata and SpotPass extdata use separate [[FS:OpenArchive|mount]] points at /user and /boss. Therefore one mount can&#039;t access the other directory, and also can&#039;t access /icon.(The title&#039;s SpotPass extdata can be mounted by the title itself, if it uses SpotPass)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other optional but notable directories include:&lt;br /&gt;
* /user/ExBanner This directory can optionally store [[Extended_Banner| extended banners]]. When this is available, this banner is displayed instead of the [[CXI]] ExeFS banner. COMMON.bin stores the common exbanner, while &amp;lt;regionlang_code&amp;gt;.bin stores an optional separate region/language specific banner.(regionlang_code can be &amp;quot;JPN_JP&amp;quot;, &amp;quot;USA_EN&amp;quot;, etc)&lt;br /&gt;
&lt;br /&gt;
=== Extdata without an independent FS ===&lt;br /&gt;
&lt;br /&gt;
==== Quota.dat ====&lt;br /&gt;
&lt;br /&gt;
* This is contained in the Quota.dat extdata image.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Magic (&amp;quot;QUOT&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Magic Number (0x30000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x38&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
It&#039;s unknown what this is used for.&lt;br /&gt;
&lt;br /&gt;
==== Database Extdata ====&lt;br /&gt;
&lt;br /&gt;
See [[Title Database|here]].&lt;br /&gt;
&lt;br /&gt;
=== SD Extdata ===&lt;br /&gt;
Usually the ExtdataID low is in the format &#039;00&amp;lt;Unique ID&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! JPN ExtdataID&lt;br /&gt;
! USA ExtdataID&lt;br /&gt;
! EUR ExtdataID&lt;br /&gt;
! Description&lt;br /&gt;
! Extdata images&lt;br /&gt;
|-&lt;br /&gt;
| 00000082&lt;br /&gt;
| 0000008f&lt;br /&gt;
| 00000098&lt;br /&gt;
| [[Home Menu]] extdata, this contains home-menu savedata and cached icons for applications.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000200&lt;br /&gt;
| 00000210&lt;br /&gt;
| 00000220&lt;br /&gt;
| [[System_Settings|System Settings]] extdata added with [[2.0.0-2]].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000207&lt;br /&gt;
| 00000217&lt;br /&gt;
| 00000227&lt;br /&gt;
| [[Mii Maker]], contains an ExBanner&lt;br /&gt;
| [https://dl.dropbox.com/u/20520664/extdata00000217.zip cleartext]&lt;br /&gt;
|-&lt;br /&gt;
| 00000208&lt;br /&gt;
| 00000218&lt;br /&gt;
| 00000228&lt;br /&gt;
| Streetpass Mii Plaza&lt;br /&gt;
| 11 mb big!&lt;br /&gt;
|-&lt;br /&gt;
| 00000209&lt;br /&gt;
| 00000219&lt;br /&gt;
| 00000229&lt;br /&gt;
| [[eShop]], contains store music in AAC format.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0000020d&lt;br /&gt;
| 0000021d&lt;br /&gt;
| 0000022d&lt;br /&gt;
| Face Raiders, likely contains an ExBanner&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0000020b&lt;br /&gt;
| 0000021b&lt;br /&gt;
| 0000022b&lt;br /&gt;
| Nintendo Zone&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 000002cc&lt;br /&gt;
| 000002cd&lt;br /&gt;
| 000002ce&lt;br /&gt;
| [[Home Menu]] theme&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 000004aa&lt;br /&gt;
| 000004ab&lt;br /&gt;
| Nintendo Video Extra Data&lt;br /&gt;
This is where the video files are stored, and [[Nintendo_Video|includes]] the thumbnail, the description, and possibly some checksum info in each video file stored in the extdata images. There are always 9 files within the subdirectory &amp;quot;00000000&amp;quot; of this folder, even without any videos downloaded. The files are &amp;quot;00000001&amp;quot; - &amp;quot;00000009&amp;quot;, and &amp;quot;00000003&amp;quot; - &amp;quot;00000008&amp;quot; have the same filesize of 50.7 MB. It is possible to restore the older videos by overwriting all the files within this directory. Provided of course you have made a backup of the files before hand, by copying all the files within this directory to your computer. As far I&#039;m aware its not possible to mix and match the files in order to get certain videos in one grouping, ie. having all 3 Zelda orchestral recordings in one group of 4 Nintendo videos.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|00000306&lt;br /&gt;
|00000308&lt;br /&gt;
|00000307&lt;br /&gt;
|Mario Kart 7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0000030b&lt;br /&gt;
| 0000030d&lt;br /&gt;
| 0000030c&lt;br /&gt;
| Nintendogs + Cats&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000326&lt;br /&gt;
| 00000326&lt;br /&gt;
| 00000326&lt;br /&gt;
| Pokédex 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000305&lt;br /&gt;
| 0000032d&lt;br /&gt;
| 0000033c&lt;br /&gt;
| Super Street Fighter IV 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000328&lt;br /&gt;
| 00000358&lt;br /&gt;
| 0000033b&lt;br /&gt;
| Ridge Racer 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0000034d&lt;br /&gt;
| 00000402&lt;br /&gt;
| Samurai Warriors Chronicles&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0000034f&lt;br /&gt;
| 0000038a&lt;br /&gt;
| Dead or Alive Dimensions&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000481&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Monster Hunter Tri G (Download-Quests)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000517&lt;br /&gt;
| ?&lt;br /&gt;
| Swapnote&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000725&lt;br /&gt;
| ?&lt;br /&gt;
| Ambassador Certificate&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000863&lt;br /&gt;
| ?&lt;br /&gt;
| Animal Crossing: New Leaf&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000a86&lt;br /&gt;
| Professor Layton and the Miracle Mask&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000c24&lt;br /&gt;
| Denpa men&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000c73&lt;br /&gt;
| 00000c73&lt;br /&gt;
| 00000c73&lt;br /&gt;
| Save Data Transfer Tool&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000d9a&lt;br /&gt;
| Donkey Kong Country Returns 3d Trailer&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000a85&lt;br /&gt;
| 00000f1e&lt;br /&gt;
| Professor Layton and the Azran legacy&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000edf&lt;br /&gt;
| ?&lt;br /&gt;
| Super Smash Bros. for 3ds&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000f14&lt;br /&gt;
| ?&lt;br /&gt;
| Phoenix Wright: Ace Attorney - Dual Destinies&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00001007&lt;br /&gt;
| 00001005&lt;br /&gt;
| Professor Layton vs Phoenix Wright: Ace Attorney&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000ea6&lt;br /&gt;
| Etrian Odyssey IV&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 000014d1&lt;br /&gt;
| 000014d1&lt;br /&gt;
| 000014d1&lt;br /&gt;
| [[Home Menu]] badge&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NAND Shared Extdata ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ExtdataID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xe0000000&lt;br /&gt;
| Home Menu attempts to open this archive during boot, if [[FS:OpenArchive]] doesn&#039;t return an error Home Menu seems to then launch the [[System Transfer]] application. Home Menu doesn&#039;t actually use this archive at all except for checking whether it exists.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000001&lt;br /&gt;
|  NAND JPEG/MPO files and phtcache.bin from the camera application are stored here. This also contains UploadData.dat.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000002&lt;br /&gt;
|  NAND M4A files from the sound application are stored here&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000009&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000b&lt;br /&gt;
|  Contains idb.dat, idbt.dat, gamecoin.dat, ubll.lst, CFL_DB.dat, and CFL_OldDB.dat. These files contain cleartext [[Mii_Maker|Miis]] and some data relating (including cached ICN data) to Play/Usage Records.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000c&lt;br /&gt;
|  Contains bashotorya.dat and bashotorya2.dat.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000d&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000e&lt;br /&gt;
|  This appears to contain a list of title-versions for eShop titles(even titles that aren&#039;t installed). This is probably used by Home Menu for the software update notification added with [[7.0.0-13]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Shared Extdata 0xf000000b gamecoin.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;
| Magic number: 0x4F00&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x2&lt;br /&gt;
| Total Play Coins&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x2&lt;br /&gt;
| Total Play Coins obtained on the date stored below. When the below date does not match the current date, this field is reset to zero, then the date(and other fields) are updated. Once this value is &amp;gt;=10, no more Play Coins can be obtained until the current date changes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Total step [[PTM:GetTotalStepCount|count]] at the time a new Play Coin was obtained.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Step count for the day the last Play Coin was obtained, for that day&#039;s step count(same as the step count displayed by home-menu when this file was updated).&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Year&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x1&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| 0x1&lt;br /&gt;
| Day&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above date stores the last time new Play Coin(s) were obtained. The contents of this file is updated by home-menu. [[PTM:GetTotalStepCount]] is not checked constantly, after home-menu boot this is only checked when waking from sleep-mode. Each time home-menu updates the contents of this file, home-menu will set the Play Coin total to 300 if it&#039;s higher than the 300 Play Coin limit.&lt;br /&gt;
&lt;br /&gt;
[[Home Menu]] loads this file / opens this archive during [[Home Menu|startup]]. When accessing this file fails, like when the file/archive is corrupted(or at least on older system-versions), the result is a brick due to Home Menu using [[SVC|svcBreak]]. [[User:Yellows8|Yellows8]] bricked a 3DS this way due to corruption via invalid [[FSFile:Write]] flush flags. When opening this extdata archive(0xf000000b) fails, Home Menu executes svcBreak.&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ps3hen/ctr_toolkit/tree/master/extdata_tool extdata_tool] - Extract/verifies standalone extdata images and title extdata FS.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Extdata&amp;diff=11354</id>
		<title>Extdata</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Extdata&amp;diff=11354"/>
		<updated>2015-01-03T04:36:01Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: /* SD Extdata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the format and encryption of extdata, &amp;quot;extra data&amp;quot; stored on [[SD_Filesystem|SD card]] and [[Flash_Filesystem|NAND]].&lt;br /&gt;
At:&lt;br /&gt;
* nand/data/&amp;lt;ID&amp;gt;/extdata/&amp;lt;ExtdataID-High&amp;gt;&lt;br /&gt;
* sdmc/Nintendo 3DS/&amp;lt;ID0&amp;gt;/&amp;lt;ID1&amp;gt;/extdata/&amp;lt;ExtdataID-High&amp;gt; &lt;br /&gt;
&lt;br /&gt;
(ExtdataID-High is always 00000000 for SD, and always 00048000 for NAND) Some titles can have Quota.dat stored in these directories. The directory-name for these directories is the ExtdataID-Low. Then there&#039;s a sub-directory 00000000, which contains the actual extdata. Size and number of files in this dir varies per title.&lt;br /&gt;
NAND stores the shared extdata and is structured exactly the same way, see [[Flash Filesystem]].&lt;br /&gt;
&lt;br /&gt;
Extdata image 00000001 contains a VSXE partition for the FST, the actual file data is stored in the subsequent extdata images.&lt;br /&gt;
&lt;br /&gt;
Regular apps can only mount SD extdata using the same extdataID which is stored in the [[NCCH#CXI|CXI]] exheader. Therefore, regular apps which have the exheader extdataID set to zero can&#039;t use extdata. This restriction doesn&#039;t apply for shared extdata with extdataID high bitmask 0x48000 stored on NAND. System apps with a certain access right can mount arbitrary extdata.&lt;br /&gt;
All NAND extdata is shared extdata, while all SD extdata is normal extdata. Thus, normal extdata doesn&#039;t exist on NAND, and shared extdata doesn&#039;t exist on SD. The extdataID high excluding that bitmask is always zero for shared extdata.&lt;br /&gt;
&lt;br /&gt;
=== Encryption ===&lt;br /&gt;
&lt;br /&gt;
These files are [[AES|encrypted]] with AES-CTR, the keyslot is initialized by [[nand/private/movable.sed|movable.sed]]. The same keyslot is used for the NAND/SD extdata MAC. The NAND extdata images are stored in cleartext. The WCHAR LowPath &amp;quot;/extdata/&amp;lt;ExtdataIDHigh&amp;gt;/&amp;lt;ExtdataIDLow&amp;gt;/&amp;lt;PathToImage&amp;gt;&amp;quot; text path is hashed with SHA-256, including the WCHAR null-terminator. A separate hash is used for Quota.dat. The base CTR seems to be then generated by XORing the calculated hash: CTRword[i] = Hashword[i] ^ Hashword[4+i].&lt;br /&gt;
&lt;br /&gt;
The base CTR is fixed therefore the CTR never changes after each write. Thus it is possible to obtain some cleartext by XORing one file(like newly created extdata) with a newer file, where the newer file overwrote zeros in the original file with non-zero data.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
Extdata uses dual &#039;partitions&#039; of IVFC hash trees to store data. The order of data in Extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
* AES MAC&lt;br /&gt;
* DIFF Header&lt;br /&gt;
* Secondary DIFI Partition descriptor&lt;br /&gt;
* Primary DIFI Partition descriptor&lt;br /&gt;
* Secondary Partition IVFC Hash Tree&lt;br /&gt;
* Primary Partition IVFC Hash Tree&lt;br /&gt;
* DATA Partition (If applicable)&lt;br /&gt;
&lt;br /&gt;
Only one Partition is active at a given time, this is determined by the DIFF header. Normally the &#039;data&#039; contained in extdata is stored at level4 of the IVFC hash tree, and hence there are two versions of the &#039;data&#039; stored in the Extdata image (although only one is &#039;active&#039;). However if DIFI flags[0] is set, this indicates it is a DATA partition and the &#039;data&#039; is stored outside the IVFC hash tree, at a relative offset defined by the DIFI partition (in this case there will be only one version of the &#039;data&#039; stored in the Extdata image).&lt;br /&gt;
&lt;br /&gt;
==== Chain Of Trust ====&lt;br /&gt;
&lt;br /&gt;
The chain of trust in extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
* MAC verifies DIFF Header&lt;br /&gt;
* DIFF Selects and verifies via Active DIFI partition descriptor&lt;br /&gt;
* Active DIFI partition descriptor points to the location of active IVFC tree (and data if applicable), and provides the hash blob to verify Level 1 of the IVFC hash tree&lt;br /&gt;
* Each IVFC level verifies the next level, until Level 4(data).&lt;br /&gt;
&lt;br /&gt;
=== Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Title extdata contains a series of extdata images which comprise an independent file system. The first image (00000001) contains the VSXE (FST) partition, and subsequent images each containing a single file. Other extdata images, such as Quota.dat and [[Title Database|database extdata]], exist independent of a FS.&lt;br /&gt;
&lt;br /&gt;
==== VSXE ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Database Magic (&amp;quot;VSXE&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Magic Number (0x30000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 8&lt;br /&gt;
| Data Table Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| File Size, divided by the value at 0x18&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Usually 0x1000&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 4&lt;br /&gt;
| &#039;Action&#039; made on most recently mounted Extdata image&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| ID of most recently mounted Extdata image&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x100&lt;br /&gt;
| Mount path, from most recently mounted Extdata image&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Data Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x38&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| Folder Table Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Folder Table =====&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Equivalent to the Used Folder Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Equivalent to the Maximum Folder Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x20&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Folder Entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Parent Folder Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x10&lt;br /&gt;
| Folder Name (ASCII)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Previous Folder&#039;s Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Last Folder Index Entry&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Last File Index Entry&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
* The folder id/index for the current entry is related to it&#039;s position in the Folder table. The folder table is accessed like an array of 0x28 byte chunks, with the header consuming index = 0, root directory at index = 1, and the subsequent folder entries following.&lt;br /&gt;
&lt;br /&gt;
===== File Table =====&lt;br /&gt;
&lt;br /&gt;
The location of the File table is calculated by aligning the end offset of the folder table to 0x1000 bytes.&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Equivalent to the Used File Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Equivalent to the Maximum File Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x28&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Folder Entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Parent Folder Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x10&lt;br /&gt;
| File Name (ASCII)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Previous File&#039;s Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unique Extdata ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
* The file id/index for the current entry is related to it&#039;s position in the File Table, much like the folder entries in the Folder Table. The file table is accessed like an array of 0x30 byte chunks, with the header consuming index = 0, and the subsequent file entries following. The relationship between the index value of the file entry, and the actual file name of the extdata image that contains it it = index+1. For instance icon (the only file in every extdata), comes right after the header, with an index value of &#039;1&#039;, and the icon is stored in extdata image &#039;00000002&#039;.&lt;br /&gt;
&lt;br /&gt;
* The Unique Extdata ID, is the same value found in the DIFF header of the referenced extdata image for that file. The value changes most times the file in question is modified. When mounting an extdata image in the VSXE filesystem, if the file&#039;s extdata image doesn&#039;t have the expected Unique Extdata ID, it won&#039;t be mounted.&lt;br /&gt;
&lt;br /&gt;
==== VSXE Filesystem structure ====&lt;br /&gt;
&lt;br /&gt;
When extdata is created, these are *always* created regardless of whether the title actually uses them.&lt;br /&gt;
&lt;br /&gt;
* /icon This file contains the extdata [[SMDH|icon]] displayed in data management. This icon can only be written to by titles when creating extdata, titles would have to recreate extdata to change the icon. This file can&#039;t be read directly, instead it is read via [[FS:ReadExtSaveDataIcon]].&lt;br /&gt;
* /user/ Contains the title&#039;s actual extdata files.&lt;br /&gt;
* /boss/ Can contain [[SpotPass]] content. SpotPass content can only be downloaded to this /boss directory.&lt;br /&gt;
&lt;br /&gt;
User extdata and SpotPass extdata use separate [[FS:OpenArchive|mount]] points at /user and /boss. Therefore one mount can&#039;t access the other directory, and also can&#039;t access /icon.(The title&#039;s SpotPass extdata can be mounted by the title itself, if it uses SpotPass)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other optional but notable directories include:&lt;br /&gt;
* /user/ExBanner This directory can optionally store [[Extended_Banner| extended banners]]. When this is available, this banner is displayed instead of the [[CXI]] ExeFS banner. COMMON.bin stores the common exbanner, while &amp;lt;regionlang_code&amp;gt;.bin stores an optional separate region/language specific banner.(regionlang_code can be &amp;quot;JPN_JP&amp;quot;, &amp;quot;USA_EN&amp;quot;, etc)&lt;br /&gt;
&lt;br /&gt;
=== Extdata without an independent FS ===&lt;br /&gt;
&lt;br /&gt;
==== Quota.dat ====&lt;br /&gt;
&lt;br /&gt;
* This is contained in the Quota.dat extdata image.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Magic (&amp;quot;QUOT&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Magic Number (0x30000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x38&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
It&#039;s unknown what this is used for.&lt;br /&gt;
&lt;br /&gt;
==== Database Extdata ====&lt;br /&gt;
&lt;br /&gt;
See [[Title Database|here]].&lt;br /&gt;
&lt;br /&gt;
=== SD Extdata ===&lt;br /&gt;
Usually the ExtdataID low is in the format &#039;00&amp;lt;Unique ID&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! JPN ExtdataID&lt;br /&gt;
! USA ExtdataID&lt;br /&gt;
! EUR ExtdataID&lt;br /&gt;
! Description&lt;br /&gt;
! Extdata images&lt;br /&gt;
|-&lt;br /&gt;
| 00000082&lt;br /&gt;
| 0000008f&lt;br /&gt;
| 00000098&lt;br /&gt;
| [[Home Menu]] extdata, this contains home-menu savedata and cached icons for applications.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000200&lt;br /&gt;
| 00000210&lt;br /&gt;
| 00000220&lt;br /&gt;
| [[System_Settings|System Settings]] extdata added with [[2.0.0-2]].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000207&lt;br /&gt;
| 00000217&lt;br /&gt;
| 00000227&lt;br /&gt;
| [[Mii Maker]], contains an ExBanner&lt;br /&gt;
| [https://dl.dropbox.com/u/20520664/extdata00000217.zip cleartext]&lt;br /&gt;
|-&lt;br /&gt;
| 00000208&lt;br /&gt;
| 00000218&lt;br /&gt;
| 00000228&lt;br /&gt;
| Streetpass Mii Plaza&lt;br /&gt;
| 11 mb big!&lt;br /&gt;
|-&lt;br /&gt;
| 00000209&lt;br /&gt;
| 00000219&lt;br /&gt;
| 00000229&lt;br /&gt;
| [[eShop]], contains store music in AAC format.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0000020d&lt;br /&gt;
| 0000021d&lt;br /&gt;
| 0000022d&lt;br /&gt;
| Face Raiders, likely contains an ExBanner&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0000020b&lt;br /&gt;
| 0000021b&lt;br /&gt;
| 0000022b&lt;br /&gt;
| Nintendo Zone&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 000002cc&lt;br /&gt;
| 000002cd&lt;br /&gt;
| 000002ce&lt;br /&gt;
| [[Home Menu]] theme&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 000004aa&lt;br /&gt;
| 000004ab&lt;br /&gt;
| Nintendo Video Extra Data&lt;br /&gt;
This is where the video files are stored, and [[Nintendo_Video|includes]] the thumbnail, the description, and possibly some checksum info in each video file stored in the extdata images. There are always 9 files within the subdirectory &amp;quot;00000000&amp;quot; of this folder, even without any videos downloaded. The files are &amp;quot;00000001&amp;quot; - &amp;quot;00000009&amp;quot;, and &amp;quot;00000003&amp;quot; - &amp;quot;00000008&amp;quot; have the same filesize of 50.7 MB. It is possible to restore the older videos by overwriting all the files within this directory. Provided of course you have made a backup of the files before hand, by copying all the files within this directory to your computer. As far I&#039;m aware its not possible to mix and match the files in order to get certain videos in one grouping, ie. having all 3 Zelda orchestral recordings in one group of 4 Nintendo videos.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|00000306&lt;br /&gt;
|00000308&lt;br /&gt;
|00000307&lt;br /&gt;
|Mario Kart 7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0000030b&lt;br /&gt;
| 0000030d&lt;br /&gt;
| 0000030c&lt;br /&gt;
| Nintendogs + Cats&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000326&lt;br /&gt;
| 00000326&lt;br /&gt;
| 00000326&lt;br /&gt;
| Pokédex 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000305&lt;br /&gt;
| 0000032d&lt;br /&gt;
| 0000033c&lt;br /&gt;
| Super Street Fighter IV 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000328&lt;br /&gt;
| 00000358&lt;br /&gt;
| 0000033b&lt;br /&gt;
| Ridge Racer 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0000034d&lt;br /&gt;
| 00000402&lt;br /&gt;
| Samurai Warriors Chronicles&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0000034f&lt;br /&gt;
| 0000038a&lt;br /&gt;
| Dead or Alive Dimensions&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000481&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Monster Hunter Tri G (Download-Quests)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000517&lt;br /&gt;
| ?&lt;br /&gt;
| Swapnote&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000725&lt;br /&gt;
| ?&lt;br /&gt;
| Ambassador Certificate&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000863&lt;br /&gt;
| ?&lt;br /&gt;
| Animal Crossing: New Leaf&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000a86&lt;br /&gt;
| Professor Layton and the Miracle Mask&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000c24&lt;br /&gt;
| Denpa men&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000c73&lt;br /&gt;
| 00000c73&lt;br /&gt;
| 00000c73&lt;br /&gt;
| Save Data Transfer Tool&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000d9a&lt;br /&gt;
| Donkey Kong Country Returns 3d Trailer&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000a85&lt;br /&gt;
| 00000f1e&lt;br /&gt;
| Professor Layton and the Azran legacy&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000edf&lt;br /&gt;
| ?&lt;br /&gt;
| Super Smash Bros. for 3ds&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00000f14&lt;br /&gt;
| ?&lt;br /&gt;
| Phoenix Wright: Ace Attorney - Dual Destinies&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 00001007&lt;br /&gt;
| 00001005&lt;br /&gt;
| Professor Layton vs Phoenix Wright: Ace Attorney&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000ea6&lt;br /&gt;
| Etrian Odyssey IV (possibly just the demo?)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 000014d1&lt;br /&gt;
| 000014d1&lt;br /&gt;
| 000014d1&lt;br /&gt;
| [[Home Menu]] badge&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NAND Shared Extdata ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ExtdataID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xe0000000&lt;br /&gt;
| Home Menu attempts to open this archive during boot, if [[FS:OpenArchive]] doesn&#039;t return an error Home Menu seems to then launch the [[System Transfer]] application. Home Menu doesn&#039;t actually use this archive at all except for checking whether it exists.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000001&lt;br /&gt;
|  NAND JPEG/MPO files and phtcache.bin from the camera application are stored here. This also contains UploadData.dat.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000002&lt;br /&gt;
|  NAND M4A files from the sound application are stored here&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000009&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000b&lt;br /&gt;
|  Contains idb.dat, idbt.dat, gamecoin.dat, ubll.lst, CFL_DB.dat, and CFL_OldDB.dat. These files contain cleartext [[Mii_Maker|Miis]] and some data relating (including cached ICN data) to Play/Usage Records.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000c&lt;br /&gt;
|  Contains bashotorya.dat and bashotorya2.dat.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000d&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000e&lt;br /&gt;
|  This appears to contain a list of title-versions for eShop titles(even titles that aren&#039;t installed). This is probably used by Home Menu for the software update notification added with [[7.0.0-13]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Shared Extdata 0xf000000b gamecoin.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;
| Magic number: 0x4F00&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x2&lt;br /&gt;
| Total Play Coins&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x2&lt;br /&gt;
| Total Play Coins obtained on the date stored below. When the below date does not match the current date, this field is reset to zero, then the date(and other fields) are updated. Once this value is &amp;gt;=10, no more Play Coins can be obtained until the current date changes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Total step [[PTM:GetTotalStepCount|count]] at the time a new Play Coin was obtained.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Step count for the day the last Play Coin was obtained, for that day&#039;s step count(same as the step count displayed by home-menu when this file was updated).&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Year&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x1&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| 0x1&lt;br /&gt;
| Day&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above date stores the last time new Play Coin(s) were obtained. The contents of this file is updated by home-menu. [[PTM:GetTotalStepCount]] is not checked constantly, after home-menu boot this is only checked when waking from sleep-mode. Each time home-menu updates the contents of this file, home-menu will set the Play Coin total to 300 if it&#039;s higher than the 300 Play Coin limit.&lt;br /&gt;
&lt;br /&gt;
[[Home Menu]] loads this file / opens this archive during [[Home Menu|startup]]. When accessing this file fails, like when the file/archive is corrupted(or at least on older system-versions), the result is a brick due to Home Menu using [[SVC|svcBreak]]. [[User:Yellows8|Yellows8]] bricked a 3DS this way due to corruption via invalid [[FSFile:Write]] flush flags. When opening this extdata archive(0xf000000b) fails, Home Menu executes svcBreak.&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ps3hen/ctr_toolkit/tree/master/extdata_tool extdata_tool] - Extract/verifies standalone extdata images and title extdata FS.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Extdata&amp;diff=11353</id>
		<title>Extdata</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Extdata&amp;diff=11353"/>
		<updated>2015-01-03T03:47:26Z</updated>

		<summary type="html">&lt;p&gt;MrCheeze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the format and encryption of extdata, &amp;quot;extra data&amp;quot; stored on [[SD_Filesystem|SD card]] and [[Flash_Filesystem|NAND]].&lt;br /&gt;
At:&lt;br /&gt;
* nand/data/&amp;lt;ID&amp;gt;/extdata/&amp;lt;ExtdataID-High&amp;gt;&lt;br /&gt;
* sdmc/Nintendo 3DS/&amp;lt;ID0&amp;gt;/&amp;lt;ID1&amp;gt;/extdata/&amp;lt;ExtdataID-High&amp;gt; &lt;br /&gt;
&lt;br /&gt;
(ExtdataID-High is always 00000000 for SD, and always 00048000 for NAND) Some titles can have Quota.dat stored in these directories. The directory-name for these directories is the ExtdataID-Low. Then there&#039;s a sub-directory 00000000, which contains the actual extdata. Size and number of files in this dir varies per title.&lt;br /&gt;
NAND stores the shared extdata and is structured exactly the same way, see [[Flash Filesystem]].&lt;br /&gt;
&lt;br /&gt;
Extdata image 00000001 contains a VSXE partition for the FST, the actual file data is stored in the subsequent extdata images.&lt;br /&gt;
&lt;br /&gt;
Regular apps can only mount SD extdata using the same extdataID which is stored in the [[NCCH#CXI|CXI]] exheader. Therefore, regular apps which have the exheader extdataID set to zero can&#039;t use extdata. This restriction doesn&#039;t apply for shared extdata with extdataID high bitmask 0x48000 stored on NAND. System apps with a certain access right can mount arbitrary extdata.&lt;br /&gt;
All NAND extdata is shared extdata, while all SD extdata is normal extdata. Thus, normal extdata doesn&#039;t exist on NAND, and shared extdata doesn&#039;t exist on SD. The extdataID high excluding that bitmask is always zero for shared extdata.&lt;br /&gt;
&lt;br /&gt;
=== Encryption ===&lt;br /&gt;
&lt;br /&gt;
These files are [[AES|encrypted]] with AES-CTR, the keyslot is initialized by [[nand/private/movable.sed|movable.sed]]. The same keyslot is used for the NAND/SD extdata MAC. The NAND extdata images are stored in cleartext. The WCHAR LowPath &amp;quot;/extdata/&amp;lt;ExtdataIDHigh&amp;gt;/&amp;lt;ExtdataIDLow&amp;gt;/&amp;lt;PathToImage&amp;gt;&amp;quot; text path is hashed with SHA-256, including the WCHAR null-terminator. A separate hash is used for Quota.dat. The base CTR seems to be then generated by XORing the calculated hash: CTRword[i] = Hashword[i] ^ Hashword[4+i].&lt;br /&gt;
&lt;br /&gt;
The base CTR is fixed therefore the CTR never changes after each write. Thus it is possible to obtain some cleartext by XORing one file(like newly created extdata) with a newer file, where the newer file overwrote zeros in the original file with non-zero data.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
Extdata uses dual &#039;partitions&#039; of IVFC hash trees to store data. The order of data in Extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
* AES MAC&lt;br /&gt;
* DIFF Header&lt;br /&gt;
* Secondary DIFI Partition descriptor&lt;br /&gt;
* Primary DIFI Partition descriptor&lt;br /&gt;
* Secondary Partition IVFC Hash Tree&lt;br /&gt;
* Primary Partition IVFC Hash Tree&lt;br /&gt;
* DATA Partition (If applicable)&lt;br /&gt;
&lt;br /&gt;
Only one Partition is active at a given time, this is determined by the DIFF header. Normally the &#039;data&#039; contained in extdata is stored at level4 of the IVFC hash tree, and hence there are two versions of the &#039;data&#039; stored in the Extdata image (although only one is &#039;active&#039;). However if DIFI flags[0] is set, this indicates it is a DATA partition and the &#039;data&#039; is stored outside the IVFC hash tree, at a relative offset defined by the DIFI partition (in this case there will be only one version of the &#039;data&#039; stored in the Extdata image).&lt;br /&gt;
&lt;br /&gt;
==== Chain Of Trust ====&lt;br /&gt;
&lt;br /&gt;
The chain of trust in extdata is as follows:&lt;br /&gt;
&lt;br /&gt;
* MAC verifies DIFF Header&lt;br /&gt;
* DIFF Selects and verifies via Active DIFI partition descriptor&lt;br /&gt;
* Active DIFI partition descriptor points to the location of active IVFC tree (and data if applicable), and provides the hash blob to verify Level 1 of the IVFC hash tree&lt;br /&gt;
* Each IVFC level verifies the next level, until Level 4(data).&lt;br /&gt;
&lt;br /&gt;
=== Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Title extdata contains a series of extdata images which comprise an independent file system. The first image (00000001) contains the VSXE (FST) partition, and subsequent images each containing a single file. Other extdata images, such as Quota.dat and [[Title Database|database extdata]], exist independent of a FS.&lt;br /&gt;
&lt;br /&gt;
==== VSXE ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Database Magic (&amp;quot;VSXE&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Magic Number (0x30000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 8&lt;br /&gt;
| Data Table Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 8&lt;br /&gt;
| File Size, divided by the value at 0x18&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 8&lt;br /&gt;
| Usually 0x1000&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 4&lt;br /&gt;
| &#039;Action&#039; made on most recently mounted Extdata image&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 4&lt;br /&gt;
| ID of most recently mounted Extdata image&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x100&lt;br /&gt;
| Mount path, from most recently mounted Extdata image&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Data Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x38&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 8&lt;br /&gt;
| Folder Table Offset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Folder Table =====&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Equivalent to the Used Folder Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Equivalent to the Maximum Folder Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x20&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Folder Entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Parent Folder Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x10&lt;br /&gt;
| Folder Name (ASCII)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Previous Folder&#039;s Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Last Folder Index Entry&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Last File Index Entry&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
* The folder id/index for the current entry is related to it&#039;s position in the Folder table. The folder table is accessed like an array of 0x28 byte chunks, with the header consuming index = 0, root directory at index = 1, and the subsequent folder entries following.&lt;br /&gt;
&lt;br /&gt;
===== File Table =====&lt;br /&gt;
&lt;br /&gt;
The location of the File table is calculated by aligning the end offset of the folder table to 0x1000 bytes.&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Equivalent to the Used File Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Equivalent to the Maximum File Entries + 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x28&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Folder Entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Parent Folder Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x10&lt;br /&gt;
| File Name (ASCII)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Previous File&#039;s Index&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unique Extdata ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
* The file id/index for the current entry is related to it&#039;s position in the File Table, much like the folder entries in the Folder Table. The file table is accessed like an array of 0x30 byte chunks, with the header consuming index = 0, and the subsequent file entries following. The relationship between the index value of the file entry, and the actual file name of the extdata image that contains it it = index+1. For instance icon (the only file in every extdata), comes right after the header, with an index value of &#039;1&#039;, and the icon is stored in extdata image &#039;00000002&#039;.&lt;br /&gt;
&lt;br /&gt;
* The Unique Extdata ID, is the same value found in the DIFF header of the referenced extdata image for that file. The value changes most times the file in question is modified. When mounting an extdata image in the VSXE filesystem, if the file&#039;s extdata image doesn&#039;t have the expected Unique Extdata ID, it won&#039;t be mounted.&lt;br /&gt;
&lt;br /&gt;
==== VSXE Filesystem structure ====&lt;br /&gt;
&lt;br /&gt;
When extdata is created, these are *always* created regardless of whether the title actually uses them.&lt;br /&gt;
&lt;br /&gt;
* /icon This file contains the extdata [[SMDH|icon]] displayed in data management. This icon can only be written to by titles when creating extdata, titles would have to recreate extdata to change the icon. This file can&#039;t be read directly, instead it is read via [[FS:ReadExtSaveDataIcon]].&lt;br /&gt;
* /user/ Contains the title&#039;s actual extdata files.&lt;br /&gt;
* /boss/ Can contain [[SpotPass]] content. SpotPass content can only be downloaded to this /boss directory.&lt;br /&gt;
&lt;br /&gt;
User extdata and SpotPass extdata use separate [[FS:OpenArchive|mount]] points at /user and /boss. Therefore one mount can&#039;t access the other directory, and also can&#039;t access /icon.(The title&#039;s SpotPass extdata can be mounted by the title itself, if it uses SpotPass)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other optional but notable directories include:&lt;br /&gt;
* /user/ExBanner This directory can optionally store [[Extended_Banner| extended banners]]. When this is available, this banner is displayed instead of the [[CXI]] ExeFS banner. COMMON.bin stores the common exbanner, while &amp;lt;regionlang_code&amp;gt;.bin stores an optional separate region/language specific banner.(regionlang_code can be &amp;quot;JPN_JP&amp;quot;, &amp;quot;USA_EN&amp;quot;, etc)&lt;br /&gt;
&lt;br /&gt;
=== Extdata without an independent FS ===&lt;br /&gt;
&lt;br /&gt;
==== Quota.dat ====&lt;br /&gt;
&lt;br /&gt;
* This is contained in the Quota.dat extdata image.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| Magic (&amp;quot;QUOT&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| Magic Number (0x30000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 8&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x38&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
It&#039;s unknown what this is used for.&lt;br /&gt;
&lt;br /&gt;
==== Database Extdata ====&lt;br /&gt;
&lt;br /&gt;
See [[Title Database|here]].&lt;br /&gt;
&lt;br /&gt;
=== SD Extdata ===&lt;br /&gt;
Usually the ExtdataID low is in the format &#039;00&amp;lt;Unique ID&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! JPN ExtdataID&lt;br /&gt;
! USA ExtdataID&lt;br /&gt;
! EUR ExtdataID&lt;br /&gt;
! Description&lt;br /&gt;
! Extdata images&lt;br /&gt;
|-&lt;br /&gt;
| 00000082&lt;br /&gt;
| 0000008f&lt;br /&gt;
| 00000098&lt;br /&gt;
| [[Home Menu]] extdata, this contains home-menu savedata and cached icons for applications.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000200&lt;br /&gt;
| 00000210&lt;br /&gt;
| 00000220&lt;br /&gt;
| [[System_Settings|System Settings]] extdata added with [[2.0.0-2]].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000207&lt;br /&gt;
| 00000217&lt;br /&gt;
| 00000227&lt;br /&gt;
| [[Mii Maker]], contains an ExBanner&lt;br /&gt;
| [https://dl.dropbox.com/u/20520664/extdata00000217.zip cleartext]&lt;br /&gt;
|-&lt;br /&gt;
| 00000208&lt;br /&gt;
| 00000218&lt;br /&gt;
| 00000228&lt;br /&gt;
| Streetpass Mii Plaza&lt;br /&gt;
| 11 mb big!&lt;br /&gt;
|-&lt;br /&gt;
| 00000209&lt;br /&gt;
| 00000219&lt;br /&gt;
| 00000229&lt;br /&gt;
| [[eShop]], contains store music in AAC format.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0000020d&lt;br /&gt;
| 0000021d&lt;br /&gt;
| 0000022d&lt;br /&gt;
| Face Raiders, likely contains an ExBanner&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0000020b&lt;br /&gt;
| 0000021b&lt;br /&gt;
| 0000022b&lt;br /&gt;
| Nintendo Zone&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 000002cc&lt;br /&gt;
| 000002cd&lt;br /&gt;
| 000002ce&lt;br /&gt;
| [[Home Menu]] theme&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 000004aa&lt;br /&gt;
| 000004ab&lt;br /&gt;
| Nintendo Video Extra Data&lt;br /&gt;
This is where the video files are stored, and [[Nintendo_Video|includes]] the thumbnail, the description, and possibly some checksum info in each video file stored in the extdata images. There are always 9 files within the subdirectory &amp;quot;00000000&amp;quot; of this folder, even without any videos downloaded. The files are &amp;quot;00000001&amp;quot; - &amp;quot;00000009&amp;quot;, and &amp;quot;00000003&amp;quot; - &amp;quot;00000008&amp;quot; have the same filesize of 50.7 MB. It is possible to restore the older videos by overwriting all the files within this directory. Provided of course you have made a backup of the files before hand, by copying all the files within this directory to your computer. As far I&#039;m aware its not possible to mix and match the files in order to get certain videos in one grouping, ie. having all 3 Zelda orchestral recordings in one group of 4 Nintendo videos.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|00000306&lt;br /&gt;
|00000308&lt;br /&gt;
|00000307&lt;br /&gt;
|Mario Kart 7&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0000030b&lt;br /&gt;
| 0000030d&lt;br /&gt;
| 0000030c&lt;br /&gt;
| Nintendogs + Cats&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000326&lt;br /&gt;
| 00000326&lt;br /&gt;
| 00000326&lt;br /&gt;
| Pokédex 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000305&lt;br /&gt;
| 0000032d&lt;br /&gt;
| 0000033c&lt;br /&gt;
| Super Street Fighter IV 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000328&lt;br /&gt;
| 00000358&lt;br /&gt;
| 0000033b&lt;br /&gt;
| Ridge Racer 3D&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0000034d&lt;br /&gt;
| 00000402&lt;br /&gt;
| Samurai Warriors Chronicles&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| 0000034f&lt;br /&gt;
| 0000038a&lt;br /&gt;
| Dead or Alive Dimensions&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000481&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Monster Hunter Tri G (Download-Quests)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000a86&lt;br /&gt;
| Professor Layton and the Miracle Mask&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000c24&lt;br /&gt;
| Denpa men&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00000c73&lt;br /&gt;
| 00000c73&lt;br /&gt;
| 00000c73&lt;br /&gt;
| Save Data Transfer Tool&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000d9a&lt;br /&gt;
| Donkey Kong Country Returns 3d Trailer&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000f1e&lt;br /&gt;
| Professor Layton and the Azran legacy&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00001005&lt;br /&gt;
| Professor Layton vs Phoenix Wright: Ace Attorney&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 00000ea6&lt;br /&gt;
| Etrian Odyssey IV&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 000014d1&lt;br /&gt;
| 000014d1&lt;br /&gt;
| 000014d1&lt;br /&gt;
| [[Home Menu]] badge&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NAND Shared Extdata ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ExtdataID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xe0000000&lt;br /&gt;
| Home Menu attempts to open this archive during boot, if [[FS:OpenArchive]] doesn&#039;t return an error Home Menu seems to then launch the [[System Transfer]] application. Home Menu doesn&#039;t actually use this archive at all except for checking whether it exists.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000001&lt;br /&gt;
|  NAND JPEG/MPO files and phtcache.bin from the camera application are stored here. This also contains UploadData.dat.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000002&lt;br /&gt;
|  NAND M4A files from the sound application are stored here&lt;br /&gt;
|-&lt;br /&gt;
|  0xf0000009&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000b&lt;br /&gt;
|  Contains idb.dat, idbt.dat, gamecoin.dat, ubll.lst, CFL_DB.dat, and CFL_OldDB.dat. These files contain cleartext [[Mii_Maker|Miis]] and some data relating (including cached ICN data) to Play/Usage Records.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000c&lt;br /&gt;
|  Contains bashotorya.dat and bashotorya2.dat.&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000d&lt;br /&gt;
|  ?&lt;br /&gt;
|-&lt;br /&gt;
|  0xf000000e&lt;br /&gt;
|  This appears to contain a list of title-versions for eShop titles(even titles that aren&#039;t installed). This is probably used by Home Menu for the software update notification added with [[7.0.0-13]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Shared Extdata 0xf000000b gamecoin.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;
| Magic number: 0x4F00&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x2&lt;br /&gt;
| Total Play Coins&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x2&lt;br /&gt;
| Total Play Coins obtained on the date stored below. When the below date does not match the current date, this field is reset to zero, then the date(and other fields) are updated. Once this value is &amp;gt;=10, no more Play Coins can be obtained until the current date changes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Total step [[PTM:GetTotalStepCount|count]] at the time a new Play Coin was obtained.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Step count for the day the last Play Coin was obtained, for that day&#039;s step count(same as the step count displayed by home-menu when this file was updated).&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Year&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x1&lt;br /&gt;
| Month&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| 0x1&lt;br /&gt;
| Day&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above date stores the last time new Play Coin(s) were obtained. The contents of this file is updated by home-menu. [[PTM:GetTotalStepCount]] is not checked constantly, after home-menu boot this is only checked when waking from sleep-mode. Each time home-menu updates the contents of this file, home-menu will set the Play Coin total to 300 if it&#039;s higher than the 300 Play Coin limit.&lt;br /&gt;
&lt;br /&gt;
[[Home Menu]] loads this file / opens this archive during [[Home Menu|startup]]. When accessing this file fails, like when the file/archive is corrupted(or at least on older system-versions), the result is a brick due to Home Menu using [[SVC|svcBreak]]. [[User:Yellows8|Yellows8]] bricked a 3DS this way due to corruption via invalid [[FSFile:Write]] flush flags. When opening this extdata archive(0xf000000b) fails, Home Menu executes svcBreak.&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ps3hen/ctr_toolkit/tree/master/extdata_tool extdata_tool] - Extract/verifies standalone extdata images and title extdata FS.&lt;/div&gt;</summary>
		<author><name>MrCheeze</name></author>
	</entry>
</feed>