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: Saturday, 19 February 2011, at 09:55:52 and has been accessed 1404 times ( redguard/tech/redtex.txt ).
/text.shtml