Formats/Common:SSH

From SSX Modding Wiki
Revision as of 10:43, 28 October 2022 by GlitcherOG (talk | contribs) (Pasted in SSH Research Data)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Overview

EA's SSH Texture Files

Magic words

Hex ASCII
???? SHPS (SSX, SSX Tricky, SSX 3)
???? ShpS (SSX On Tour)

SHPS

Header

Type Description
UInt32 SSH File Size
UInt32 Texture Count
Char[4] Gimex Version/Creator Code

Texture Entries

| Type    |   Description  |

|---------|----------------|

| Char[4] | Short Name     |

| UInt32  | Offset         |

Header End

| Type   | Description |

|--------|------------|

| Char[4]| Group      |

| Char[4]| String?    |

Texture Entry

Entry Texture Types

All shape entries start with a header that looks like this:

struct ShapeChunkHeader {

uint8_t chunkType;

uint24_t nextChunk;

// Note that the above isn't a standard type.

// You can probably represent it as a bitfield if you want.

// In layman's terms, if the next chunk offset is 0, then

// it's the end of this shape.

bool IsEndOfShape() {

return nextChunk == 0x0;

}

};

| Chunk Type           | Description                  |

|----------------------|-------------------------------|

| 0x1                  | 4-Bit (16 Colours) Data       |

| 0x2                  | 8-bit (256 Colours) Data      |

| 0x5                  | 32-bit True Color Image       |

| 0x20                 | Palette/CLUT                  |

| 105                  | Metal Bin (Metal Alpha)            |

| 0x70                 | Long/Full Name                |

| 0x85 (`0x5 OR 0x80`)  | 8-bit Data, RefPack Compressed|

If `(type & 0x80) == 1` the data will be compressed with RefPack.

Texture Header

| Type   | Description |

|--------|-------------|

| Byte   | Entry Type  |

| UInt24 | Size        |

| UInt16 | Width       |

| UInt16 | Height      |

| UInt16 | XAxis       |

| UInt16 | YAxis       |

| UInt16 | Swizzled    |

| UInt16 | Unknown     |

The data following this header can be:

| Image Type | Data Type                       |

|------------|---------------------------------|

| 4-bit      | 4-bit indexes into Palette/CLUT |

| 8-bit      | 8-bit indexes into Palette/CLUT |

| 32-bit     | BGRA8888 Direct Colors          |

Colour Pallet Header

| Type   | Description |

|--------|-------------|

| Byte   | Entry Type  |

| UInt24 | Size        |

| UInt16 | Width       |

| UInt16 | Height      |

| UInt16 | Total       |

| UInt16 | Unknown     |

| UInt16 | Swizzled    |

| UInt16 | Unknown     |

After the header is *Width* count BGRA8888 colors.

Long Name Header

| Type     | Description  |

|----------|--------------|

| Byte     | Entry Type   |

| UInt24   | Size         |

| C String | Long Name    |