Texture format codes
The numeric format in TextureMap selects a pixel codec; its separate transfer flag controls colour-space treatment. Storage size alone cannot distinguish codecs with the same block or pixel size. Observed
| Code | Codec | Storage | Evidence and confidence |
|---|---|---|---|
| 0 | BGRA8 UNORM | 4 bytes/pixel | The built-in normal’s ff 80 80 ff is a flat normal only in BGRA order; skin palettes corroborate it. Observed |
| 1 | RGBA8 SNORM | 4 bytes/pixel | A noise map is exactly the 256-entry Perlin gradient table when read as signed bytes: two components ±127 and one zero. Observed |
| 2, 3 | BC1 | 8 bytes/4×4 block | Storage census and independently decoded real samples agree. Observed |
| 4 | BC2 | 16 bytes/block | Storage and independent real-sample decoders agree. Observed |
| 5 | BC3 | 16 bytes/block | Storage and independent real-sample decoders agree. Observed |
| 6 | BC4 UNORM | 8 bytes/block | Storage and independent real-sample decoders agree. Observed |
| 7 | BC5 UNORM | 16 bytes/block | Storage and independent real-sample decoders agree. Observed |
| 8 | BC6H unsigned float | 16 bytes/block | Together with code 9, all 2,066,602 examined blocks are valid BC6H and decode to coherent maps. Observed |
| 9 | BC6H signed float | 16 bytes/block | Signed SH-transfer maps agree with this interpretation. Observed |
| 10 | BC7 | 16 bytes/block | Real-sample output agrees byte-for-byte with two independent decoders. Observed |
| 11 | A8 UNORM | 1 byte/pixel | The engine’s resource-creation record uses DXGI 65, A8_UNORM, for the matching map. Observed |
| 12 | R8 UNORM | 1 byte/pixel | Independent real-sample decodes agree. Observed |
| 15 | Codec unresolved | 4 bytes/pixel in three of four maps | Size fits do not establish channel meaning. Unknown |
| 20 | RGBA16 float | 8 bytes/pixel | Storage and independent half-float sample decoding agree. Observed |
Code 0 has conflicting third-party names, BGRA8 versus RGBA8; the normal and palette content discriminates them. Code 11 also has conflicting A8 versus R8 labels; the engine’s DXGI creation record discriminates that case. These disagreements concern channel interpretation, not byte length. Observed · tool tables and discriminating content/runtime records
The storage census fills each supported image’s held mip sizes. Earlier storage-only failures include layered images, zero mip counts, image-less debug maps and additional codecs; a failure of a flat-only interpretation does not establish corrupt image data. Observed
Transfer flag
Section titled “Transfer flag”For formats with sRGB views, flag 1 requests sRGB and flag 0 linear. Runtime resource formats corroborate the flag rather than a label-based role heuristic. A format lacking an sRGB variant does not become sRGB merely because the flag is set. Observed · resource-format comparisons
Normal and surface channels are commonly packed together in BC7. A census of texture properties includes 9,111 direct normal-labelled BC7 bindings, 23 BC5 bindings and exceptions with flag 1 on normal-labelled maps. Texture roles must therefore come from the template and shader, separately from the codec. Proven · texture-property join counts
Three of its four stored maps fit four bytes per pixel, but the codec is not established. The remaining map’s framing also needs a separate explanation. Unknown
Shaun White Skateboarding
Section titled “Shaun White Skateboarding”only in SWS
Shaun White Skateboarding’s TextureMap format codes are a smaller set than the later engine’s. The table gives, for each code, how its levels are stored (every TextureMap of the 33 data forges fills its pixels exactly so), how many TextureMaps of the install use it, and the Direct3D 9 format the game’s own renderer creates its textures with. The created formats are those of every texture of the code the game loaded from a new game to the start of the level-02 load, each level of which it uploaded byte for byte from the stored level.
| Code | Storage | TextureMaps | Created as | Confidence |
|---|---|---|---|---|
| 0 | 4 bytes per texel | 10 | not loaded on the traced route | storage Proven, codec Unknown |
| 2 | 8-byte blocks | 21,402 | D3DFMT_DXT1 (436 textures, 4,219 levels; 154 linear and 282 sRGB) |
storage Proven, format Observed |
| 3 | 8-byte blocks | 401 | D3DFMT_DXT1 (4 textures, 20 levels) |
storage Proven, format Observed |
| 4 | 16-byte blocks | 2,126 | D3DFMT_DXT3 (32 textures, 325 levels) |
storage Proven, format Observed |
| 5 | 16-byte blocks | 14,931 | D3DFMT_DXT5 (555 textures, 1,372 levels) |
storage Proven, format Observed |
| 12 | 16-byte blocks | 1,981 | D3DFMT_DXT5 (10 textures, 88 levels): a BC3 normal map |
storage Proven, format Observed |
The gamma field does not change the created format: sRGB and linear textures of the same code are created alike, so the conversion is not part of the texture’s format. Observed The stored sizes and an independent block decoder agree on codes 2 to 5 and 12 over level 01 and the extra forge. Observed · level 01 and the extra forge
Code 12 is not the one-byte format that the same code means in Riders Republic. Reading it as a four-float format would not fit the stored sizes. Observed
The stored normal maps carry the X component in alpha and the Y component in green, with Z rebuilt by the shader, according to the game’s shader source. Which direction green points is not stored; the tangent frames of 30,784 triangles fit green as up with the tangent along the U axis. Normal maps occur in level 01 only on characters (17 materials) and water effects (3); levels 03, 05 and 06 use them for water only. Observed · level 01 and the shader source
The convention for the green channel’s direction is a fit to tangent-frame data and is not read from the engine; the orientation of code 12 content is left as stored. Inferred