Line 1:
Line 1:
== Overview ==
== Overview ==
−
The Extended Banner format is ridiculously simple. The Extended Banner is used to add text (and optionally an extra texture) to a given banner. It can also (optionally) be used to set an expiration date for a banner.
+
The Extended Banner format is very simple. The Extended Banner is used to add text (and optionally an extra texture) to a given banner. It can also (optionally) be used to set an expiration date for a banner.
+
+
See [[Extdata|here]] for how the extended-banners are loaded from extdata. The Home Menu extended-banner loading function will immediately return without loading anything if the programID is for System Settings.
+
+
=== SpotPass ===
+
When Home Menu loads extended-banners, it also attempts to load a "[[CBMD]]" banner via [[BOSS_Services|SpotPass]] service commands. Normally this CBMD banner doesn't exist in extended-banner extdata. This is [[BOSS_Services|broken]] with New3DS titles since Home Menu uses these BOSS commands with the New3DS bitmask in the programID set. The common and language-specific(when offset is non-zero) "CGFX" specified by the CBMD are decompressed and processed.
+
+
The "CGFX" sections in this CBMD are actually the exact same exbanners loaded from normal extdata. The exbanner data from SpotPass is stored to the same state as the extdata-exbanners. No CWAV is loaded from SpotPass data.
+
+
The exbanners from SpotPass must have a timestamp less than current_datetime, otherwise they won't be parsed. The timestamp for the banner is calculated with: <code>nintimestamp_mktime(out, exbanner->year, exbanner->month, exbanner->day, <hour=23>, <minute = 59>, <second = 59>, <millisecond = 999>);</code>
== Format ==
== Format ==
Line 15:
Line 24:
| 0x000
| 0x000
| 0x002
| 0x002
−
| Texture Width. (if texture is used)
+
| Texture width (if texture is used)
|-
|-
| 0x002
| 0x002
| 0x002
| 0x002
−
| Texture Height. (if texture is used)
+
| Texture height (if texture is used)
|-
|-
| 0x004
| 0x004
| 0x002
| 0x002
−
| Texture Colour Format. (if texture is used)
+
| Texture colour format (if texture is used)
|-
|-
−
| 0x008
+
| 0x006
| 0x004
| 0x004
−
| Year to expire (0x34 0x08 if never expires)
+
| Year to expire
|-
|-
−
| 0x00C
+
| 0x00A
| 0x002
| 0x002
−
| Month to expire (0x01 if never expires)
+
| Month to expire
|-
|-
−
| 0x010
+
| 0x00C
| 0x002
| 0x002
−
| Day to expire (0x01 if never expires)
+
| Day to expire
|-
|-
−
| 0x014
+
| 0x00E
−
| 0x015
+
| 0x016
| Name of texture (if texture is used)
| Name of texture (if texture is used)
|-
|-
| 0x024
| 0x024
−
| 0x255
+
| 0x200
−
| Plaintext comment to be displayed in the banner on the HOME Menu.
+
| Plain text comment (255 character max) to be displayed in the banner on the HOME Menu
|-
|-
−
| 0x2A4
+
| 0x224
|
|
| If used, this is where the extra texture is located, otherwise file ends.
| If used, this is where the extra texture is located, otherwise file ends.
|-
|-
|}
|}
+
+
The date used for never-expiring exbanners varies, on retail like with Mii Maker this is December 31, 2099, where year is 0x833, month is 0xC, and day is 0x1F. The expiration-timestamp is only used for SpotPass exbanners, not extdata-exbanners.
== Texture Colour Formats ==
== Texture Colour Formats ==
Line 101:
Line 112:
|-
|-
|}
|}
+
+
== Titles using extended banners ==
+
System:
+
* [[Mii Maker]]
+
* [[Face Raiders]]