Difference between revisions of "Sacred"

From XentaxWiki
Jump to: navigation, search
(244 bytes of padding were forgoten in CIF header)
(Format Specifications, added ISO v3 (PAK\Tiles.pak))
Line 33: Line 33:
 
:: byte {39}&nbsp;&nbsp;&nbsp; - null Padding <br>  
 
:: byte {39}&nbsp;&nbsp;&nbsp; - null Padding <br>  
 
:: byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - File Data <br>  
 
:: byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - File Data <br>  
 +
<br>
 +
: <font color="blue"> ''' } ''' </font> <br>
 +
<br>
 +
<font color="blue"> ''' else if (header == ISO && id == 3){ ''' </font> <br>
 +
: uint32 {4}&nbsp;&nbsp; - Number Of Files <br>
 +
: uint32 {4}&nbsp;&nbsp; - Number Of Files <font color="purple"> '' Yep, again '' </font> <br>
 +
: byte {244}&nbsp;&nbsp; - null <br>
 +
<br>
 +
: <font color="blue"> ''' // for each file ''' </font> <br>
 +
:: uint32 {4}&nbsp;&nbsp; - Tag_66 <font color="purple"> '' Always = 66 '' </font> <br>
 +
:: uint32 {4}&nbsp;&nbsp; - Offset <br>
 +
:: uint32 {4}&nbsp;&nbsp; - Tag_64 <font color="purple"> '' Always = 64 '' </font> <br>
 +
<br>
 +
: <font color="blue"> ''' // for each file ''' </font> <br>
 +
:: char {32}&nbsp;&nbsp;&nbsp; - Filename <font color="purple">(null)</font> <br>
 +
:: uint32 {4}&nbsp;&nbsp; - Entry Index within the file PAK\Texture.pak <br>
 +
:: uint32 {4}&nbsp;&nbsp; - Tile position within texture <font color="purple"> '' Range from 0 to 17 '' </font> <br>
 +
:: byte {6}&nbsp;&nbsp;&nbsp;&nbsp; - null <br>
 +
:: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Tag_1 <font color="purple"> '' Always = 1 '' </font> <br>
 +
:: byte {17}&nbsp;&nbsp;&nbsp; - null <br>
 
<br>
 
<br>
 
: <font color="blue"> ''' } ''' </font> <br>  
 
: <font color="blue"> ''' } ''' </font> <br>  

Revision as of 11:13, 26 October 2005

Choose archive extension:

PAK


Format Specifications

byte {3}     - Header
byte {1}     - Type ID

if (header == TEX && id == 3){

uint32 {4}   - Number Of Files
uint32 {4}   - Unknown
byte {244}   - null


// for each file
uint32 {4}   - Type ID
uint32 {4}   - Offset
uint32 {4}   - Compressed Size


// for each file
char {32}    - Filename (null)
uint16 {2}   - X Image Size
uint16 {2}   - Y Image Size
byte {1}     - Type ID
uint32 {4}   - Compressed Size
byte {39}    - null Padding
byte {X}     - File Data


}


else if (header == ISO && id == 3){

uint32 {4}   - Number Of Files
uint32 {4}   - Number Of Files Yep, again
byte {244}   - null


// for each file
uint32 {4}   - Tag_66 Always = 66
uint32 {4}   - Offset
uint32 {4}   - Tag_64 Always = 64


// for each file
char {32}    - Filename (null)
uint32 {4}   - Entry Index within the file PAK\Texture.pak
uint32 {4}   - Tile position within texture Range from 0 to 17
byte {6}     - null
byte {1}     - Tag_1 Always = 1
byte {17}    - null


}


else if (header == CIF && id == 0){

uint32 {4}   - Number Of Files
uint32 {4}   - Unknown
byte {244}   - null


// for each file
byte {64}    - File Data


}


else if (header == WPN && id == 8){

uint32 {4}   - Number Of Files
uint32 {4}   - Unknown


// for each file
byte {322}   - File Data


}


else if (header == SND && id == 1){

uint32 {4}   - Number Of Files
uint32 {4}   - Unknown
byte {244}   - null


// for each file
uint32 {4}   - Type ID
uint32 {4}   - Offset
uint32 {4}   - Compressed Size


}


else if (header == ITM && id == 5){

uint32 {4}   - Number Of Files
uint32 {4}   - Unknown
byte {244}   - null


// for each file
uint32 {4}   - Type ID
uint32 {4}   - Offset
uint32 {4}   - Compressed Size


// for each file
byte {56}    - Unknown
char {32}    - Filename (null)
byte {X}     - File Data


}


else if (header == ITM && id == 3){

uint32 {4}   - Number Of Files
uint32 {4}   - Unknown
byte {244}   - null


// for each file
uint32 {4}   - Type ID
uint32 {4}   - Offset
uint32 {4}   - Compressed Size


// for each file
char {32}    - Filename (null)
byte {X}     - File Data


}



File Data Format in TEX (textures) PAK

This is a simple zlib-compressed image, as the first character of the File Data indicates (it's an 'x'). The size of this File Data is 'Compressed Size' bytes, the size of the uncompressed file is :

   Uncompressed File Data Size = (X Image Size) * (Y Image Size) * 2

Once uncompressed, you have directly the pixels. Each pixel is an unsigned word (16 bits). It contains Alpha, Red, Green and Blue componant values, and each are 4 bits. A mapping of these bits would give :

   (highest bit) AAAARRRRGGGGBBBB (lowest bit)

The encoding of the pixel is Top to Bottom, and for each line is Left to Right. Note : the Alpha channel IS really used (it's not just for padding), check H_KEULE_02_1.TGA from texture00.pak for a good example (16 levels of alpha here)

MultiEx BMS Script

Not written yet

Compatible Programs