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]] |