GameCube and Wii Image Formats

From Wexos's Wiki
Revision as of 17:31, 1 May 2024 by Wexos (talk | contribs) (Imported from avsys wiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
Under Construction
This article is not finished. Help improve it by adding accurate information or correcting grammar and spelling.

There are different image formats supported on GameCube and Wii. Textures are generally large and requires a lot of memory. Choosing the correct texture format is important in order to maximize performance, save memory and recieving best quality contra size. This articles describes the different image formats supported on both GameCube and Wii.

Blocks

For optimization, all images are encoded into blocks instead of storing the image data row by row. The block width and height depends on the format.

Image Formats

Image Formats
ID Name Bits Per Pixel (BPP) Block Width Block Height Block Size Type
0x00 I4 4 8 8 32 bytes Luminance
0x01 I8 8 8 4 32 bytes Luminance
0x02 IA4 8 8 4 32 bytes Luminance + Alpha
0x03 IA8 16 4 4 32 bytes Luminance + Alpha
0x04 RGB565 16 4 4 32 bytes Color
0x05 RGB5A3 16 4 4 32 bytes Color + Alpha
0x06 RGBA8 32 4 4 64 bytes Color + Alpha
0x08 C4 4 8 8 32 bytes Palette (IA8, RGB565, RGB5A3)
0x09 C8 8 8 4 32 bytes Palette (IA8, RGB565, RGB5A3)
0x0A C14X2 16 4 4 32 bytes Palette (IA8, RGB565, RGB5A3)
0x0E CMPR 4 8 8 32 bytes Compressed Color + Alpha

I4

I4 is an intensity format which uses 4-bit luminance. Since the BPP is lower than 8, 1 byte is actually used for two pixels. The upper nibble stores the first pixel and the lower one stores the second pixel.

I8

I8 is an intensity format which uses 8-bit luminance.

IA4

IA4 is a format which uses 4-bit luminance and 4-bit alpha. The upper nibble stores the luminance value, and the lower nibble stores the alpha.

IA8

IA8 is a format which uses 8-bit luminance and 8-bit alpha. The luminance byte is stored before the alpha byte.

RGB565

RGB565 is a format which uses 5-bit red, 6-bit green and 5-bit blue. A pixel is stored in the following layout:
RRRR RGGG GGGB BBBB

RGB5A3

RGB565 is a format which can either store 4-bit red, 4-bit green, 4-bit blue and 3 bit alpha, or 5-bit red, 5 bit green and 5-bit blue. The top bit decides this. A pixel is stored in the following layout:
RGB5: 1RRR RRGG GGGB BBBB
RGB4A3: 0AAA RRRR GGGG BBBB

RGBA8

RGBA8 is a format which uses 8-bit red, 8-bit green, 8-bit blue and 8-bit alpha. It is not recommended to use as it uses lots of memory. The components are stored in a special way. First all alpha and red components in a block is stored, and then comes the green and blue components of the same block after.

C4

C4 is a palette format used to specify 4-bit indices into a color array. The colors are stored in a palette, and the colors are encoded into a palette format. The maximum amount of colors that can be stored is 16.

C8

C8 is a palette format used to specify 8-bit indices into a color array. The colors are stored in a palette, and the colors are encoded into a palette format. The maximum amount of colors that can be stored is 256.

C14X2

C8 is a palette format used to specify 14-bit indices into a color array. The two top-most bits are ignored. The colors are stored in a palette, and the colors are encoded into a palette format. The maximum amount of colors that can be stored is 16384.

CMPR

The CMPR format is a compressed image format. It uses the DXT1 algorithm (also known as BC1). It's a lossy compression to achieve a 4-bit BPP. It has also the possibility for a 1 bit alpha channel.

Palette Formats

Image Formats
ID Name Bits Per Palette Color Type
0x00 IA8 16 Luminance + Alpha
0x01 RGB565 16 Color
0x02 RGB5A3 16 Color + Alpha

File Formats

The following file formats support all image formats: