Star Stable Online TGA

From XentaxWiki
Jump to: navigation, search

TGA

  • Game : Star Stable Online
  • Format Type : Image
  • Endian Order : Big Endian


Format Specifications

// Star Stable Online
// TGA file format


// file header - 25 bytes
8 bytes - unknown
4 bytes (char) - compression type  // e.g. "DXT1"
13 bytes - unknown


// crn texture header (big endian) - 74 bytes
2 bytes (char) - magic // "Hx"
2 bytes (uint16) - header size   // e.g. 106 
2 bytes (uint16) - header CRC16 
4 bytes (uint32) - data size  
2 bytes (uint16) - data CRC16
2 bytes (uint16) - width
2 bytes (uint16) - height
1 byte (uint8) - mipmap level index // 0 is the largest/first level
1 byte (uint8) - number of faces
1 byte (uint8) - format number
2 bytes (uint16) - flags
4 bytes (uint32) - reserved
4 bytes (uint32) - user data 0
4 bytes (uint32) - user data 1

8 bytes - color endpoints (palette structure)
8 bytes - color selectors (palette structure)
8 bytes - alpha endpoints (palette structure)
8 bytes - alpha selectors (palette structure)

2 bytes (uint16) - tables size
3 bytes - tables offsets
4 bytes - levels offsets


x bytes - encrypted image data

Related Structures

// Palette structure

3 bytes - offsets
3 bytes - size
2 bytes - num

MultiEx BMS Script

Not written yet.

Notes and Comments

  • This is CRN texture file with added extra header. It is also encrypted with unknown algorithm.
  • CRC16 calculation can be described as below:
// header crc16
const uint32 header_crc = crc16(&pHeader->m_data_size, (uint32)(pHeader->m_header_size - ((const uint8*)&pHeader->m_data_size - (const uint8*)pHeader)));

//data crc16
const uint32 data_crc = crc16((const uint8*)pData + pHeader->m_header_size, pHeader->m_data_size - pHeader->m_header_size);

// Note: More details in "crn_decomp.h" file.

Compatible Programs