Textureinformation Crash 2/3

From Crash Bandicoot Hacking Wiki
Revision as of 19:58, 6 August 2016 by Wikia>Warenhuis (Introduction)
Jump to navigation Jump to search

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

The contents represent the following:

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.

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!).

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?

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