Difference between revisions of "Icon.bin"
(Added checksum section. Thanks loopy_.) |
|||
Line 101: | Line 101: | ||
g <<= 3; | g <<= 3; | ||
b <<= 3; | b <<= 3; | ||
+ | |||
+ | == Checksums == | ||
+ | {| class="wikitable" | ||
+ | |- style="background-color: #ddd;" | ||
+ | ! Number | ||
+ | ! Range | ||
+ | ! Polynominal | ||
+ | |- | ||
+ | | 0 | ||
+ | | 020-83F | ||
+ | | 0xA001 | ||
+ | |- | ||
+ | | 1 | ||
+ | | 020-93F | ||
+ | | | ||
+ | |- | ||
+ | | 2 | ||
+ | | 020-A3F | ||
+ | | | ||
+ | |- | ||
+ | | 3 | ||
+ | | 1240-23C0 | ||
+ | | | ||
+ | |} |
Revision as of 21:44, 25 April 2009
These are the banners you'll see in various places in the System Menu. They have the dimension 32x32 pixels.
These are converted by a tool bLAStY wrote. Icon files were supplied by loopy.
Basic File Structure
Start | Length | Description |
---|---|---|
0x0000 | 2 | File Version/Magic (should be 0x0301) |
0x0002 | 2*4 | 4 CRC checksums (polynominal 0x6000 or 0xA001) |
0x000A | 22 | Padding (00's) |
0x0020 | 512 | Default Bitmap |
0x0230 | 32 | Palette for above |
0x0250 | 256*8 | Application Title (in 8 languages), wide chars |
0x0A40 | 2048 | Padding (00's) |
0x1240 | 512*8 | 8 Bitmaps (for animation) |
0x2240 | 32*8 | 8 Palettes |
0x2340 | 80 | Animation Sequence |
Languages (in correct order) are: Japanese, English, French, German, Italian, Spanish, Unknown, Unknown.
Animation Sequence
The sequence is represented by 2-byte tokens, in the following format (we're now talking bits, from left to right):
Length | Description | Mask |
---|---|---|
1 | Flip Vertically | 0x8000 |
1 | Flip Horizontally | 0x4000 |
3 | Palette Index | 0x3800 |
3 | Bitmap Index | 0x0700 |
8 | Frame Duration (in frames) | 0x00FF |
Both bytes being zero indicates the end of the sequence. If the first token is zero, the non-animated default image is shown.
Bitmap Format
The bitmap is tiled 8x8 pixels (Nintendo tends to do this). Each pixel contain 4 bits of data, being the index into the palette specified by the current sequence-token.
The Palettes
Each color in the palette is in the standard 2-byte RGB5551 format (used since GBA).
The conversion to RGB888 is made like this (C):
u8 r = (color ) & 0x1f; u8 g = (color >> 5) & 0x1f; u8 b = (color >> 10) & 0x1f; r <<= 3; g <<= 3; b <<= 3;
Checksums
Number | Range | Polynominal |
---|---|---|
0 | 020-83F | 0xA001 |
1 | 020-93F | |
2 | 020-A3F | |
3 | 1240-23C0 |