Just got a chance to play with this some more. Paint.net seems to be the only program that can properly write these images the way the Wii wants them (with the help of inserting the footer hex). The only thing I can see that it's doing different is the last byte in the TGA v2.0 header. The last byte is a bit mask that specifies "the order in which pixel data is transferred from the file to the screen" (left-to-right/top-to-bottom). When I use xconvert, which gives me the option of bottom-up or (I assume) top-down options, the value is either 0 or 20 which is top-left or bottom-left origin. When I save with paint.net, the value is 8 which equates to a bottom-right origin. Assuming this is the key... I need to find something that I can use to batch-convert to covers for 600 titles into the proper specification
edit: I believe the spec I read saying paint.net was using "bottom-right" as an origin according to the bit mask was wrong. Either that or ImageMagick has their commands wrong. The correct command with ImageMagick is to use "BottomLeft" as the origin, and I assume that is correct.
Hi guys.
I gave some thought about TGA spec to @godreborn. Hope will help you.
in add, about the image descryptor byte in the header (at 0x12):
Code:
Image Descriptor Byte.
Bits 3-0 - number of attribute bits associated with each
pixel. For the Targa 16, this would be 0 or
1. For the Targa 24, it should be 0. For
Targa 32, it should be 8.
Bit 4 - reserved. Must be set to 0.
Bit 5 - screen origin bit.
0 = Origin in lower left-hand corner.
1 = Origin in upper left-hand corner.
Must be 0 for Truevision images.
Bits 7-6 - Data storage interleaving flag.
00 = non-interleaved.
01 = two-way (even/odd) interleaving.
10 = four way interleaving.
11 = reserved.
So:
value 0x00 (0b00000000) means no pixel attribute (no alpha), screen origin to the lower left corner.
value 0x08 (0b00001000) means 1 pixel attribute (alpha channel), screen origin to the lower left corner.
value 0x20 (0b00100000) means no pixel attribute (no alpha), screen origin to the upper left corner.
value 0x28 (0b00101000) means 1 pixel attribute (alpha channel), screen origin to the upper left corner.
Last edited by littlebalup,