TEXTUREx
From ZDoom Wiki
| Tip: For ZDoom-specific projects, it is recommended to use the TEXTURES lump instead, as it offers more powerful features. |
TEXTUREx refers to the naming format of the original Doom engine's texture specification lumps, traditionally named TEXTURE1 and TEXTURE2. A TEXTUREx entry defines the width, height, patches that compose the texture, etc.
ZDoom added an extension to this format, allowing to scale textures. This use an inverse scale system were the normal is 8: 16 is double resolution (and half the dimension); 4 is half the resolution (and double the dimension). For example, a texture "HIRES100" that should be 64x by 128y but is 256x by 512y would be xscale 32 yscale 32.
Specification
| Header | |||
|---|---|---|---|
| Offset | Length | Name | Content |
| Lump +0x00 | 4 (sint32) | numtextures | An integer holding a the number of map textures. |
| Lump +0x04 | 4 * numtextures | offset[ ] | An array of integers containing the offsets to the map textures (see below) in this lump. |
| maptexture_t | |||
| Texture +0x00 | 8 (char*) | name | The texture's name, as a string of eight ASCII characters. Only the characters A-Z (uppercase), 0-9, and [ ] - _ should be used. |
| Texture +0x08 | 2 (uint16) | flags | Texture flags. There is only one flag implemented: WORLDPANNING, with a value of 0x8000. |
| Texture +0x0A | 1 (uint8) | scalex | The texture's horizontal scaling. 8 is normal, 16 is double resolution, etc. |
| Texture +0x0B | 1 (uint8) | scaley | The texture's vertical scaling. 8 is normal, 16 is double resolution, etc. |
| Texture +0x0C | 2 (sint16) | width | A short integer defining the total width of the map texture. |
| Texture +0x0E | 2 (uint16) | height | A short integer defining the total height of the map texture. |
| Texture +0x10 | 4 (uint8*) | columndirectory | Obsolete, ignored. This entry is absent from the Strife texture specification, so ZDoom tests the lump format by the value of the bytes at offsets 0x12 and 0x13 (along with the value of patchcount), if they are non-zero it is assumed to not be the unused "columndirectory" data and the format is identified as the Strife one. Garbage values at this place in a Doom-format TEXTUREx lump will therefore cause malfunction. |
| Texture +0x14 | 2 (sint16) | patchcount | the number of map patches that make up this map texture. |
| Texture +0x16 | (10 or 6) * patchcount | patches[ ] | array with the map patch structures for this texture, see below. Patches are composited in the order they are listed, with the latter one drawing over the former ones in case of overlap. |
| mappatch_t | |||
| Patch +0x00 | 2 (sint16) | originx | A short int defining the horizontal offset of the patch relative to the upper-left of the texture |
| Patch +0x02 | 2 (sint16) | originy | A short int defining the vertical offset of the patch relative to the upper-left of the texture |
| Patch +0x04 | 2 (sint16) | patch | A short int defining the patch number (as listed in PNAMES) to draw |
| Patch +0x06 | 2 (sint16) | stepdir | Unused value. This is altogether omitted from the Strife specification. |
| Patch +0x08 | 2 (sint16) | colormap | Unused value. This is altogether omitted from the Strife specification. |
