From DSiBrew
Revision as of 09:04, 24 April 2009 by Blasty (talk | contribs)
Jump to navigation Jump to search

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

Icon 1.gif Icon 2.gif Icon 3.gif Icon 4.gif Icon 5.gif

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
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 = (r << 3) | (r >> 2);
 g = (g << 3) | (g >> 2);
 b = (b << 3) | (b >> 2);