1 December 1998 Dave Humphrey
dave@uesp.net
The ES:Redguard - TEXBSI File Format
INTRODUCTION
Some of the Redguard image data is stored in the TEXBSI.* files found in the
FXART game directory. This document explains the format of these files as
best that is known. It is assumed that you are at least slightly familiar
with hex-editting and base-16 numbers. All of the texture files in the game
and in the demo have been tested for any of the 'confirmed' markers.
FORMAT DESCRITION
Each texture file is composed of multiple image structures, one following the
other. The largest texture files in Redguard contain less than 100 images at
the most. The image is always started with a 9 byte name identifier. If the
image name is null (i.e., all 00h characters or 0 length) this indicates
the end of a texture file. Following the name is a long integer representing
the size in bytes the image takes up.
9 bytes (string) = Name
4 bytes (long integer) = Image Size in bytes
The size is not included for the last image in the file. The image size does
not include the 13 bytes taken by name and size fields. The image is then
divided into a number of sub-records, typically including the following in
that order:
Type
Header
Data
End
The image sub-records have the following structure:
4 bytes (string) = Name
4 bytes (long integer, Motorolal byte order) = Size in bytes
The size of the sub-record again does not include the 8 bytes of header info.
Please note that the sub-record size field is written with the Motorolal
byte order and not the usual Intel byte order. For instance, if we were
writing the hex number AABBCCDDh to a file:
Intel Byte Order: DD CC BB AA
Motorolal Byte Order: AA BB CC DD
There are fields with a zero size indicating they contain no data. The
possible image sub-records are described below.
Type: 'BSIF' (this or IFHD are required)
Size: Always 0 (Confirmed)
Desc: Appears to identify the image as a particular format. Perhaps
the 'BattleSpire Image Format'? Requires a following 'BHDR' type
sub-record.
Type: 'IFHD' (this or BSIF are required)
Size: Always 44 (Confirmed)
Desc: This represents an 'Image Format HeaDer' data structure containing
header information for the current image. It appears that this and
the 'BSIF' type sub-record cannot exist together.
short u1 (always 0001h)
short u2[21] (always 0000h)
Type: 'BHDR' (Required)
Size: Always 26 (Confirmed)
Desc: This is an image header structure for the 'BSIF' type image.
short x_offset } Most likely
short y_offset } but unsure?
short width
short height
char u1 (always 00h or 01h)
char u2 (always 00/01/09h)
short u3 (always 0000h)
short u4 (always 0000h)
short u5 (always 0001-0010h)
short u6 (0000-00FFh, 0041h occurs the most)
short u7 (always 0000h)
short u8 (always 0000h)
char u9 (always 00/80/A3h, mostly 00h)
char u10 (always 00/01/02h, mostly 01h)
short u11 (alays 0000/0004h, mostly 0000h)
Type: 'CMAP' (Optional)
Size: 768 (Confirmed)
Desc: A color map, or palette, for defining custom colors for the current
image. The data is 256 colors written in RGB triplets.
Type: 'DATA' (Required)
Size: Variable
Desc: This sub-record contains all the image data.
Type: 'END ' (Required)
Size: Always 0 (Confirmed)
Desc: Always the last sub-record in an image. Note that there is a space
after the 'D'.
Thus, a valid image format is composed of the following:
Image Header - Required
BSIF or IFHD - Required
BHDR - Required
CMAP - Optional
DATA - Required
END - Required
TEXTURE FORMAT REVIEW
Here's a brief review of the texture format now that all the important stuff
has been explained:
Image #1
Name (9 bytes)
Size (4 bytes)
Sub-Records ('BSIF', 'BHDR', 'END', etc...)
Image #2
Name
Size
Sub-Records
...
Last Image
Name (9 bytes) = '' (null or empty string)
Thus, if a texture file had no images it would just be 9 bytes in size,
consisting of all 00h characters.
If you have any problems, suggestions or comments on this page or website, please
feel free to use the Contact Form to send
a message to the WebMaster.
This document was last modified on: Sunday, 06 September 2009, at 11:44:02
and has been accessed
607
times
( redguard/tech/redtex.txt ).
/text.shtml