TEX File Format Description

Die Namen der Blöcke sind von mir frei erfunden. Ich habe diese so benannt, dass es Sinn ergibt. Bis jetzt bin ich mit dieser Strategie sehr gut gefahren und habe brauchbare Ergebnisse erziehlt. Ich denke die nachfolgende Beschreibung für das TEX-Format dürfte ausreichend sein um das Dateiformat zu verstehen.

BLOCK-Description

Prinzipieller Aufbau einer TEX-Datei in Blöcken

PALETTE (768)

pred          1        red color
pgreen        1        green color
pblue         1        blue color
reserved      1        unused (=0)

FILEHEADER (22)

texturecount  2        number of textures stored
unknown       2        65535
unknown       2        1
string <16>   16       'CMerlinTexture'

TEXTUREHEADER (6 + x)

string <8>    x        name of texture
reserved      2        0
isdecal       2        (1 if a decal, 0 if not)
imagecount    2        number of images used

Die Anzahl der Mipmaps wird wie folgt berechnet. Die kleinste Mipmap-Textur darf pro Seite nicht weniger als 4 Pixel aufweisen. So hat eine Textur von 512x128 Pixel die folgenden Mipmaps: 256x64, 128x32, 64x16, 32x8, 16x4. Imagecount ist in diesem Fall 6.

IMAGEEHEADER (10)

width         2        width of image
mwidth        2        width of image - 1
height        2        height of image
mheight       2        height of image - 1
unknown       2        2^n of smaller texture side

Wenn ein Bild mit der Größe 512x128 verwendet wird, so steht hier 7, denn 2^7 ergibt 128. Ich schätze es handelt sich hier um einen Wert der den Raycaster von Hover! steuert.

PIXELDATA (4 + x)

pixelsused    4        number of pixels used for image
pixeldata     x        pixel data

TRANSPARENTDATA

fields        4        number of fields to draw
n = width of image
repeated n times {
fieldsrow     2        number of fields in this column = m
repeated m times {
fieldstart    2        start drawing here
fieldend      2        end drawing here
}
}
undefined     2        0

NEXTBLOCK (2)

unknown       1        1
unknown       1        128

ENDBLOCK (2)

unknown       1        0
unknown       1        0

Infos zu PIXELDATA und TRANSPARENTDATA

Der erste Integerwert beschreibt die Anzahl der Pixel, die für das aktuelle Bild verwendet werden. Eine Textur mit der Auflösung von 256 auf 256 Pixel ohne Transparenz hat genau 65536 Pixel. Jedes transparente Pixel wird nicht mitberechnet. Sind von der Textur (z.B. 256x256, also 65536 Pixel) nun 5000 Pixel transparent, so werden auch nur 60536 Pixel geschrieben. Das besondere an Hover! ist, dass die Texturen nicht zeilenweise, sondern spaltenweise abgearbeitet werden. Das folgende Bild demonstriert, wie eine Textur samt Transparenzinformationen gespeichert wird.

Das Prinzip zum Speichern einer Textur mit Transparenz