Difference between revisions of "Home Menu/Themes"

From 3dbrew
Jump to navigation Jump to search
Line 49: Line 49:
 
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| Version (Must be 1?)
+
| Version (Must be 1)
 
|-
 
|-
 
| 0x4
 
| 0x4
| 0x4
+
| 0x1
| ?
+
| Unknown
 +
|-
 +
| 0x5
 +
| 0x1
 +
| 0 = unknown, non-zero = unknown.
 
|-
 
|-
 
| 0x8
 
| 0x8
Line 61: Line 65:
 
| 0xC
 
| 0xC
 
| 0x4
 
| 0x4
| Must be less than 4?
+
| Must be <4.
 
|-
 
|-
 
| 0x10
 
| 0x10
Line 81: Line 85:
 
| 0x20
 
| 0x20
 
| 0x4
 
| 0x4
| Bottom Screen Frame Count
+
| Bottom Screen Frame Count, must be <4.
 
|-
 
|-
 
| 0x24
 
| 0x24
Line 90: Line 94:
 
| 0x4
 
| 0x4
 
| Bottom Screen Solid Color/Texture offset (Rgb565 at 320x240)
 
| Bottom Screen Solid Color/Texture offset (Rgb565 at 320x240)
 +
|-
 +
| 0x2C
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x34
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x3C
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x48
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x50
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x4C
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x64
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x6C
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x78
 +
| 0x4
 +
| Must be <3.
 +
|-
 +
| 0x80
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x88
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x90
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0x98
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0xA0
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0xA8
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0xB0
 +
| 0x4
 +
| Must be <2.
 +
|-
 +
| 0xB8
 +
| 0x4
 +
| Must be <2.
 
|-
 
|-
 
| 0xBC
 
| 0xBC
Line 100: Line 172:
 
|}
 
|}
  
The filesize is aligned to 0x10-bytes. The size of the above header is 0xD0-bytes.
+
The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes. The size of the above header is 0xD0-bytes(0xC4-bytes aligned to 0x10-bytes?).
  
 
==Audio data section==
 
==Audio data section==

Revision as of 23:45, 13 November 2014

This page describes the formats/structure of the data stored in RomFS for Home Menu DLC, for themes.

Control Content

The control content has content-index 0. It's unknown what if any of this is Home Menu specific.

RomFS structure:

  • "MetaDataContentHeader.bin": Unknown, size is 0x44-bytes.
  • "ContentInfoArchive_<region>_<lang>.bin" Contains the list of all DLC content available under this DLC title(which can include DLC that's not yet accessible via the shop). <region> can be "USA", etc. <lang>, for the US title: "en", "es", "fr", and "pt".
  • "icons/<decimal_id>.icn" Contains the raw DLC icon image data, without any header.

ContentInfoArchive entry format, size 0xC8(this file contains the following entry for each of the DLC content):

Relative offset Size Description
0x0 0x4 Content index - 1
0x4 0x4 0x0 = disabled, 0x1 = enabled.
0x8 0x40 char string for the title text.
0x48 0x88 char string for the description text.

The first entry is a "header": contentindex val=1, second word = <total DLC content excluding DLC control content>. The two strings are set to dummy text.

Theme Content

RomFS structure:

  • "bgm.bcstm": Background music, see here.
  • "body_LZ.bin": LZ11 compressed blob containing the rest of the theme data(graphics + optional CWAVs).

Decompressed body_LZ.bin structure

Offset Size Description
0x0 0x4 Version (Must be 1)
0x4 0x1 Unknown
0x5 0x1 0 = unknown, non-zero = unknown.
0x8 0x4 ?
0xC 0x4 Must be <4.
0x10 0x4 Top Screen Frame Count (If 0 then solid color at 0x14, else texture at 0x18)
0x14 0x4 Top Screen Solid Color (RGB8)
0x18 0x4 Top Screen Texture offset (Rgb565 at (320*(Top Screen Frame Count))*240)
0x1C 0x4 ?
0x20 0x4 Bottom Screen Frame Count, must be <4.
0x24 0x4 Bottom Screen Type (0=SolidColor, 2=Rgb565)
0x28 0x4 Bottom Screen Solid Color/Texture offset (Rgb565 at 320x240)
0x2C 0x4 Must be <2.
0x34 0x4 Must be <2.
0x3C 0x4 Must be <2.
0x48 0x4 Must be <2.
0x50 0x4 Must be <2.
0x4C 0x4 Must be <2.
0x64 0x4 Must be <2.
0x6C 0x4 Must be <2.
0x78 0x4 Must be <3.
0x80 0x4 Must be <2.
0x88 0x4 Must be <2.
0x90 0x4 Must be <2.
0x98 0x4 Must be <2.
0xA0 0x4 Must be <2.
0xA8 0x4 Must be <2.
0xB0 0x4 Must be <2.
0xB8 0x4 Must be <2.
0xBC 0x4 Audio data section size.
0xC0 0x4 Offset for the audio data section.

The filesize is aligned to 0x10-bytes. The filesize must be at least 0xC4-bytes. The size of the above header is 0xD0-bytes(0xC4-bytes aligned to 0x10-bytes?).

Audio data section

Offset Size Description
0x0 0x4 Unknown
0x4 0x4 Unknown
0x8 Beginning of the audio data entries.

The audio data section contains the sound effects for this theme.

Audio data entry structure:

Offset Size Description
0x0 0x4 CWAV size.
0x4 0x4 Unknown
0x8 CWAV

In certain cases there may be more data starting at offset 0x8 than what's listed above, before the CWAV.

Built-in themes

The built-in themes are stored at Home Menu RomFS:/theme/<Color>_LZ.bin, the format appears to be the same as body_LZ.bin in the theme DLC content.