Icon.bin: Difference between revisions

From DSiBrew
Jump to navigation Jump to search
No edit summary
Remark (talk | contribs)
File Structure documented
Line 1: Line 1:
These are the banners you'll see in various places in the [[System Menu]]. They have the dimension 32x32 pixels.
[[Image:icon_1.gif]]
[[Image:icon_1.gif]]
[[Image:icon_2.gif]]
[[Image:icon_2.gif]]
Line 4: Line 6:
[[Image:icon_4.gif]]
[[Image:icon_4.gif]]
[[Image:icon_5.gif]]
[[Image:icon_5.gif]]
== Basic File Structure ==
{| class="wikitable"
|- style="background-color: #ddd;"
! Start
! Length
! Description
|-
| 0x0000
| 2
| File Version/Magic (should be 0x0301)
|-
| 0x0002
| 2*4
| 4 CRC checksums
|-
| 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):
{| class="wikitable"
|- style="background-color: #ddd;"
! Length
! Description
! Mask
|-
| 1
| Flip Vertically
| 0x8000
|-
| 1
| Flip Horizontally
| 0x4000
|-
| 3
| Palette Index
| 0x3800
|-
| 3
| Bitmap Index
| 0x0700
|-
| 8
| Frame Duration (in ms)
| 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 RGB555 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 = (r << 3) | (r >> 2);
  g = (g << 3) | (g >> 2);
  b = (b << 3) | (b >> 2);

Revision as of 15:15, 23 April 2009

These are the banners you'll see in various places in the System Menu. They have the dimension 32x32 pixels.

Basic File Structure

Start Length Description
0x0000 2 File Version/Magic (should be 0x0301)
0x0002 2*4 4 CRC checksums
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 ms) 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 RGB555 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 = (r << 3) | (r >> 2);
 g = (g << 3) | (g >> 2);
 b = (b << 3) | (b >> 2);