Difference between revisions of "Extended Banner"
(→Format) |
|||
Line 8: | Line 8: | ||
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. | 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. The exbanners from SpotPass must have a timestamp less than current_datetime, otherwise they won't be parsed. | + | 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 == |
Revision as of 20:03, 31 December 2016
Overview
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 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 SpotPass service commands. Normally this CBMD banner doesn't exist in extended-banner extdata. This is 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: nintimestamp_mktime(out, exbanner->year, exbanner->month, exbanner->day, <hour=23>, <minute = 59>, <second = 59>, <millisecond = 999>);
Format
Extension: .BIN
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x000 | 0x002 | Texture width (if texture is used) |
0x002 | 0x002 | Texture height (if texture is used) |
0x004 | 0x002 | Texture colour format (if texture is used) |
0x008 | 0x004 | Year to expire |
0x00C | 0x002 | Month to expire |
0x010 | 0x002 | Day to expire |
0x014 | 0x015 | Name of texture (if texture is used) |
0x024 | 0x200 | Plain text comment (255 character max) to be displayed in the banner on the HOME Menu |
0x2A4 | 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
CODE | ENCODING |
---|---|
0x00 | RGBA8 |
0x01 | RGB8 |
0x02 | RGBA5551 |
0x03 | RGBA565 |
0x04 | RGBA4 |
0x05 | LA8 |
0x06 | HILO8 |
0x07 | L8 |
0x08 | A8 |
0x09 | LA4 |
0x0A | L4 |
0x0B | A4 |
0x0C | ETC1 |
0x0D | ETC1A4 |
Titles using extended banners
System: