Warrior Kings BCP: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>WATTO
No edit summary
imported>WATTO
No edit summary
Line 1: Line 1:
= BCP =  
* [[GRAFs|Return to the list of games]]
 
Choose archive extension:
 
== BCP ==  


* ''' Format Type ''':    Archive <br>  
* ''' Format Type ''':    Archive <br>  
Line 8: Line 12:


<tt><b>
<tt><b>
byte {44}&nbsp;&nbsp;&nbsp; - Header <font color="purple">(PAK File 2.01 <font color="purple">(c)</font> Black Cactus Games Limited)</font> <br>  
char {44}&nbsp;&nbsp;&nbsp; - Header <font color="purple">(PAK File 2.01 (c) Black Cactus Games Limited)</font> <br>  
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Unknown '' </font> <br>  
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Unknown '' </font> <br>  
uint32 {4}&nbsp;&nbsp; - Directory Offset <br>  
uint32 {4}&nbsp;&nbsp; - Directory Offset <br>  
uint32 {4}&nbsp;&nbsp; - Directory Length <br>  
uint32 {4}&nbsp;&nbsp; - Directory Length <br>  
<br>
byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - File Data <br>  
byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - File Data <br>  
uint32 {4}&nbsp;&nbsp; - Number Of Files <br>
<br>
<br>
<font color="blue"> ''' // for each file ''' </font> <br>  
<font color="blue"> ''' // Main Directory ''' </font> <br>  
: uint32 {4}&nbsp;&nbsp; - File Offset <br>
: uint32 {4}&nbsp;&nbsp; - Number Of Files <br>  
: uint32 {4}&nbsp;&nbsp; - Offset To Next File <br>
: uint32 {4}&nbsp;&nbsp; - File Size <br>
: uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Unknown <font color="purple">(Hash?)</font> '' </font> <br>
: uint32 {4}&nbsp;&nbsp; - <font color="red"> '' File Type ID? '' </font> <br>  
<br>
<br>
<font color="blue"> ''' // for each directory { ''' </font> <br>  
: <font color="blue"> ''' // for each file ''' </font> <br>  
: <font color="blue"> ''' // NOTE: The next 3 fields don't appear in the first directory! ''' </font> <br>
:: uint32 {4}&nbsp;&nbsp; - File Offset <br>  
: uint32 {4}&nbsp;&nbsp; - Number Of Sub-Directories In This Directory <br>  
:: uint32 {4}&nbsp;&nbsp; - Offset To Next File <br>
: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Directory name Length <font color="darkgreen">[*2 for unicode]</font> <br>  
:: uint32 {4}&nbsp;&nbsp; - File Size <br>  
: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Directory name <font color="purple">(unicode text - 2-bytes per letter)</font> <br>  
:: uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Hash? '' </font> <br>  
: uint32 {4}&nbsp;&nbsp; - Number Of Files In Directory <font color="purple">(not including sub-directories)</font> <br>  
:: uint32 {4}&nbsp;&nbsp; - <font color="red"> '' File Type ID? '' </font> <br>  
<br>
<br>
: <font color="blue"> ''' // for each file in the directory { ''' </font> <br>  
: <font color="blue"> ''' // for each directory { ''' </font> <br>  
:: uint32 {4}&nbsp;&nbsp; - File ID <font color="purple">(incremental, starting from 0)</font> <br>  
:: <font color="blue"> ''' // Note: The next 3 fields don't appear in the first directory! ''' </font> <br>  
:: uint64 {8}&nbsp;&nbsp; - <font color="red"> '' Unknown '' </font> <br>  
:: uint32 {4}&nbsp;&nbsp; - Number Of Sub-Directories In This Directory <br>  
:: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Filename Length <font color="darkgreen">[*2 for unicode]</font> <br>  
:: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Directory name Length <font color="darkgreen">[*2 for unicode]</font> <br>  
:: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Filename <font color="purple">(unicode text - 2-bytes per letter)</font> <br>  
:: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Directory name <font color="purple">(unicode text - 2-bytes per letter)</font> <br>  
:: <font color="blue"> ''' } ''' </font> <br>  
:: uint32 {4}&nbsp;&nbsp; - Number Of Files In Directory <font color="purple">(not including sub-directories)</font> <br>  
<br>
<br>
: <font color="blue"> ''' // for each sub-directory in this directory { ''' </font> <br>  
:: <font color="blue"> ''' // for each file in the directory { ''' </font> <br>  
:: <font color="blue"> ''' // REPEAT FROM "//for each directory" ''' </font> <br>  
::: uint32 {4}&nbsp;&nbsp; - File ID <font color="purple">(incremental, starting from 0)</font> <br>
:: <font color="blue"> ''' } ''' </font> <br>  
::: uint64 {8}&nbsp;&nbsp; - <font color="red"> '' Unknown '' </font> <br>
::: byte {1}&nbsp;&nbsp;&nbsp;&nbsp; - Filename Length <font color="darkgreen">[*2 for unicode]</font> <br>
::: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Filename <font color="purple">(unicode text - 2-bytes per letter)</font> <br>  
::: <font color="blue"> ''' } ''' </font> <br>  
<br>
<br>
:: <font color="blue"> ''' // for each sub-directory in this directory { ''' </font> <br>
::: <font color="blue"> ''' // Repeat from "//for each directory" ''' </font> <br>
::: <font color="blue"> ''' } ''' </font> <br>
<br>
<br>
</b></tt>
</b></tt>


=== MultiEx BMS ===  
=== MultiEx BMS Script ===  


Not written yet<br><br>
Not written yet<br><br>
Line 49: Line 55:
=== Notes and Comments ===  
=== Notes and Comments ===  


The filenames are stored as unicode text, which means that each character is stored as 2 bytes instead of 1. For ASCII text, it is sufficient to read only the first chartacter in each pair, as the second byte will be null<br>
* The filenames are stored as unicode text, which means that each character is stored as 2 bytes instead of 1. For ASCII text, it is sufficient to read only the first chartacter in each pair, as the second byte will be null
<br>
<br><br>
=== Supported Programs ===  
=== Compatible Programs ===  


* [[Game Extractor|Game Extractor]]<br>
* [[Game Extractor|Game Extractor]]<br>

Revision as of 03:33, 16 May 2005

Choose archive extension:

BCP


Format Specifications

char {44}    - Header (PAK File 2.01 (c) Black Cactus Games Limited)
uint32 {4}   - Unknown
uint32 {4}   - Directory Offset
uint32 {4}   - Directory Length

byte {X}     - File Data

// Main Directory

uint32 {4}   - Number Of Files


// for each file
uint32 {4}   - File Offset
uint32 {4}   - Offset To Next File
uint32 {4}   - File Size
uint32 {4}   - Hash?
uint32 {4}   - File Type ID?


// for each directory {
// Note: The next 3 fields don't appear in the first directory!
uint32 {4}   - Number Of Sub-Directories In This Directory
byte {1}     - Directory name Length [*2 for unicode]
char {X}     - Directory name (unicode text - 2-bytes per letter)
uint32 {4}   - Number Of Files In Directory (not including sub-directories)


// for each file in the directory {
uint32 {4}   - File ID (incremental, starting from 0)
uint64 {8}   - Unknown
byte {1}     - Filename Length [*2 for unicode]
char {X}     - Filename (unicode text - 2-bytes per letter)
}


// for each sub-directory in this directory {
// Repeat from "//for each directory"
}


MultiEx BMS Script

Not written yet

Notes and Comments

  • The filenames are stored as unicode text, which means that each character is stored as 2 bytes instead of 1. For ASCII text, it is sufficient to read only the first chartacter in each pair, as the second byte will be null



Compatible Programs