Textureinformation Crash 2/3
Introduction
In Crash 2/3, textureinformation contains information about a 3D model's UV coordinates, (animated) textures and colorpalettes. This information is stored in 12-byte structures in the 4th item of scenery and modelentries. The textureinformation can also be used by 'extended information', which is stored in the 7th item in sceneryentries or the 5th item in modelentries. Extended information can loop through multiple 12-byte structures to make animated textures, or provide settings for textures with different LOD's (Levels of Detail).
Textureinformation
The format for the 12-byte structure consists of 3 consequent 32-bit integers and is as follows:
YYYYYYYY YYYYXXXX BBBBBBBB AAAAAAAA
TTTTTTTT FCC0SSSS DDDDDDDD CCCCCCCC
HHHHHHHH GGGGGGGG FFFFFFFF EEEEEEEE
AAAAAAAA
for triangle type “AA” and “BB”, mapping point 3 x
for triangle type “CC”, mapping point 1 x
BBBBBBBB
for triangle type “AA” and “BB”, mapping point 3 y
for triangle type “CC”, mapping point 1 y
XXXX
CLUT-line origin x coordinate (CLUT: Color LookUp Table, contain the colors for a specific texture)
YYYYYYYYYYYY
CLUT-line origin y coordinate
The origin [x,y] for the CLUT-line is placed in a 16-bit interpretation of the texturechunk. The values can be calculated as follows:
CLUT-line origin x = 16 * DDDD
CLUT-line origin y = 4 * EEEE EEEE + CCCC
CCCCCCCC
mapping point 2 x
DDDDDDDD
mapping point 2 y
F Flag determined to define a 8 or 4-bit texture. 0 = 4-bit, 1 = 8-bit.
CC
Colormode. 0 = translucent face 1 = additive face 2 = subtractive face 3 = standard face
0
Unused?
4-bit textures can have 2^4 = 16 different colors. Therefore the corresponding CLUT-line should always be 16 pixels long (in 16-bit!).
8-bit textures can have 2^8 = 256 different colors. Therefore the corresponding CLUT-line should always be 256 pixels long (in 16-bit!).
SSSS
Texturechunk segment index (0, 1, 2 or 3)
Each texturechunk in the original Crash games consists out of 4 segments.
The 16-bit size of a texturechunk is 256 x 128
The 8-bit size of a texturechunk is 512 x 128
The 4-bit size of a texturechunk is 1024 x 128
Therefore, the segments in 16-, 8- and 4-bit mode are respectively:
- 64 x 128,
- 128 x 128
- 256 x 128
The segment index refers to the origin of the segment. The mapping points work relative from this origin. Note that the values of the mapping points are not effected by 8- or 4-bit mode. The x,y values range from 0 to 255 and are fixed.
TTTTTTTT
refers to an offset from 0x0C in the header, for which textureslot to use (0-7 (i.e. 0x0 – 0x40 ) )
EEEEEEEE
for triangle type “AA” and “BB”, mapping point 1 x
for triangle type “CC”, mapping point 3 x
FFFFFFFF
for triangle type “AA” and “BB”, mapping point 1 y
for triangle type “CC”, mapping point 3 y
scenery quads only:
GGGGGGGG
mapping point 4 y
HHHHHHHH
mapping point 4 x