Technical Data |
Extended Bitmaps and FS2000 |
BitMapHeader |
WORD DWORD WORD WORD DWORD |
FileType (always 'B' 'M') FileSize (usually 0 for uncompressed images) Reserved1 (0) Reserved2 (0) BitmapOffset (offset to start of image data) |
BitMapInfo |
DWORD LONG LONG WORD WORD DWORD DWORD LONG LONG DWORD DWORD |
Size; Width; Height; Planes; BitsPerPixel; Compression; (0 for 8 bit, 3 for 16 bit) SizeOfBitmap; HorzResolution; VertResolution; ColorsUsed; ColorsImportant; |
BitFieldsMask (16/32 bit images) |
DWORD DWORD DWORD |
RedMask GreenMask BlueMask |
The 3 masks used in 16 bit files set which way the 16 bits are split between the 3 colour channels. The 2 main formats you will find are 565 (R=0xF8000000 G=0x07E00000 B=0x001F0000) and 444 (R=0xF0000000 G=0x0F000000 B=0x00F00000). The NT 3.0 format only allows for 3 channels so the Extended Bitmap is assuming that the spare 4 bits with 444 are a transparency channel. 32 bit files use the Masks in the same way to define the split between colour channels. | ||
PaletteEntry (8 bit Images) |
BYTE BYTE BYTE BYTE |
Blue Green Red Pad (used for Transparency in Extended Bitmaps) |
|
|
|
FS70 |
LONG |
ID (always 'F' 'S' '7' '0') |
LONG | HeaderLength (always 20) | |
LONG | Unknown1 - Values seen 0,1,3,7 | |
WORD | Unknown2 - Values seen 0,1 | |
WORD | ImageSize (largest image = 1<<ImageSize) | |
LONG | Unknown3 - Values seen 0 | |
The new FS70 Header section that appears in some FS2000 Extended Bitmaps is not fully understood
yet. Many have all 3 Unknown entries set to zero. Unknown1 may be a indication of texture type - Ground textures
have a value of 3 except for the lm (Night) versions which have a value of 7. Sea and Sand textures seem to have
a value of 1 and most other textures have 0 The FS70 section appears in some 8 bit Bitmaps and all 16 bitBitmaps. Interestingly all the Building (Day) textures are without the section but all the Building (Night) textures have it. The FS70 Header will always appear immediately before the start of the Pixel Data. Because this is a "Non-Standard" addition to the Bmp format many Paint programs will not realise it is there and start reading Pixel data at the start of the FS70 block and so display the image offset by 20 pixels (with 8 bit images). The only safe way to read an image in is to test the "BitMapOffset" in the BitMapHeader and use that to identify the start of the actual Pixel data. |
||
|
|
|
BitMapHeader BitMapInfo PaletteEntry[256] Pixel Data 256x256 |
14 40 1024 65536 |
|
|
Total Filesize | 66614 |
|
|
|
BitMapHeader BitMapInfo PaletteEntry[256] - Includes Transparency data FS70 Header - Not in all images Pixel Data 256x256 Pixel Data 128x128 Pixel Data 64x64 Pixel Data 32x32 Pixel Data 16x16 Pixel Data 8x8 Pixel Data 4x4 Pixel Data 2x2 Pixel Data 1x1 |
14 40 1024 20 65536 16384 4096 1024 256 64 16 4 1 |
|
|
Total Filesize FS70 Total Filesize CFS |
88479 88459 |
|
|
|
BitMapHeader BitMapInfo BitFieldsMask FS70 Header Pixel Data 256x256 Pixel Data 128x128 Pixel Data 64x64 Pixel Data 32x32 Pixel Data 16x16 Pixel Data 8x8 Pixel Data 4x4 Pixel Data 2x2 Pixel Data 1x1 |
14 40 4 20 131072 32768 8192 2048 512 128 32 8 2 |
|
|
Total Filesize | 174848 |
|