Icon.bin: Difference between revisions

From DSiBrew
Jump to navigation Jump to search
Ludo6431 (talk | contribs)
Some fixes
Ludo6431 (talk | contribs)
 
(4 intermediate revisions by 4 users not shown)
Line 7: Line 7:
[[Image:icon_5.gif]]
[[Image:icon_5.gif]]


These are converted by a tool bLAStY wrote. Icon files were supplied by loopy.
These are converted by a tool blasty wrote. Icon files were supplied by loopy.


== Basic File Structure ==
== Basic File Structure ==
Line 17: Line 17:
|-
|-
| 0x0000
| 0x0000
| 2
| 1
| File Version/Magic (should be 0x0301)
| Number of titles (5+N)
|-
| 0x0001
| 1
| Animated (1=contains animated icon at 0x1240)
|-
|-
| 0x0002
| 0x0002
| 2*4
| 2*4
| 4 CRC checksums (polynominal 0x6000 or 0xA001)
| 4 CRC checksums (polynomial 0xA001)
|-
|-
| 0x000A
| 0x000A
Line 37: Line 41:
|-
|-
| 0x0240
| 0x0240
| 256*8
| 256*16
| Application Title (in 8 languages), wide chars
| Application Titles, wide chars
|-
| 0x0A40
| 2048
| Padding (00's)
|-
|-
| 0x1240
| 0x1240
Line 56: Line 56:
| Animation Sequence
| Animation Sequence
|}
|}
Languages (in correct order) are: Japanese, English, French, German, Italian, Spanish, Unknown, Unknown.
Languages (in correct order) are: Japanese, English, French, German, Italian, Spanish, ?Chinese?, Korean.


== Animation Sequence ==
== Animation Sequence ==
Line 95: Line 95:


The conversion to RGB888 is made like this (C):
The conversion to RGB888 is made like this (C):
<source lang="c">
   u8 r = ((color      ) & 0x1f)<<3;
   u8 r = ((color      ) & 0x1f)<<3;
   u8 g = ((color >>  5) & 0x1f)<<3;
   u8 g = ((color >>  5) & 0x1f)<<3;
   u8 b = ((color >> 10) & 0x1f)<<3;
   u8 b = ((color >> 10) & 0x1f)<<3;
</source>


== Checksums ==
== Checksums ==
The CRC-output is not bitwise inverted after the calculation, but it is byte-swapped to big-endian. Polynominal used is: 0xA001, same for all.
The CRC-output is not bitwise inverted after the calculation, but it is byte-swapped to big-endian. Polynomial used is: 0xA001, same for all.


{| class="wikitable"
{| class="wikitable"

Latest revision as of 19:41, 13 February 2011

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 1 Number of titles (5+N)
0x0001 1 Animated (1=contains animated icon at 0x1240)
0x0002 2*4 4 CRC checksums (polynomial 0xA001)
0x000A 22 Padding (00's)
0x0020 512 Default Bitmap
0x0220 32 Palette for above
0x0240 256*16 Application Titles, wide chars
0x1240 512*8 8 Bitmaps (for animation)
0x2240 32*8 8 Palettes
0x2340 128 Animation Sequence

Languages (in correct order) are: Japanese, English, French, German, Italian, Spanish, ?Chinese?, Korean.

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 (one frame = 1/60sec)) 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)<<3;
  u8 g = ((color >>  5) & 0x1f)<<3;
  u8 b = ((color >> 10) & 0x1f)<<3;

Checksums

The CRC-output is not bitwise inverted after the calculation, but it is byte-swapped to big-endian. Polynomial used is: 0xA001, same for all.

Number Range
0 020-83F
1 020-93F
2 020-A3F
3 1240-23C0