Difference between revisions of "Star Stable Online TGA"

From XentaxWiki
Jump to: navigation, search
(MultiEx BMS Script)
(Related Structures)
 
Line 52: Line 52:
 
=== Related Structures ===  
 
=== Related Structures ===  
  
*
+
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
 +
<pre>
 +
// Palette structure
 +
 
 +
3 bytes - offsets
 +
3 bytes - size
 +
2 bytes - num
 +
</pre>
 +
</div>
  
 
=== MultiEx BMS Script ===  
 
=== MultiEx BMS Script ===  

Latest revision as of 14:34, 10 January 2021

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