Warrior Kings BCP: Difference between revisions
Jump to navigation
Jump to search
imported>Captain mNo edit summary |
imported>WATTO No edit summary |
||
| Line 1: | Line 1: | ||
= BCP = | = BCP = | ||
''' Format Type ''': Archive <br> | * ''' Format Type ''': Archive <br> | ||
''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br> | * ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br> | ||
| Line 12: | Line 12: | ||
uint32 {4} - Directory Offset <br> | uint32 {4} - Directory Offset <br> | ||
uint32 {4} - Directory Length <br> | uint32 {4} - Directory Length <br> | ||
byte {X} - File Data <br> | |||
uint32 {4} - Number Of Files <br> | |||
<br> | <br> | ||
<font color="blue"> ''' // | <font color="blue"> ''' // for each file ''' </font> <br> | ||
: uint32 {4} - File Offset <br> | |||
: uint32 {4} - Offset To Next File <br> | |||
: uint32 {4} - File Size <br> | |||
: uint32 {4} - <font color="red"> '' Unknown <font color="purple">(Hash?)</font> '' </font> <br> | |||
: uint32 {4} - <font color="red"> '' File Type ID? '' </font> <br> | |||
<br> | <br> | ||
<font color="blue"> ''' // for each directory { ''' </font> <br> | |||
: <font color="blue"> ''' // | : <font color="blue"> ''' // NOTE: The next 3 fields don't appear in the first directory! ''' </font> <br> | ||
: uint32 {4} - Number Of Sub-Directories In This Directory <br> | |||
: | : byte {1} - Directory name Length <font color="darkgreen">[*2 for unicode]</font> <br> | ||
: | : char {X} - Directory name <font color="purple">(unicode text - 2-bytes per letter)</font> <br> | ||
: uint32 {4} - Number Of Files In Directory <font color="purple">(not including sub-directories)</font> <br> | |||
<br> | <br> | ||
: <font color="blue"> ''' // for each | : <font color="blue"> ''' // for each file in the directory { ''' </font> <br> | ||
:: uint32 {4} - File ID <font color="purple">(incremental, starting from 0)</font> <br> | |||
:: uint64 {8} - <font color="red"> '' Unknown '' </font> <br> | |||
:: byte {1} - Filename Length <font color="darkgreen">[*2 for unicode]</font> <br> | |||
:: char {X} - Filename <font color="purple">(unicode text - 2-bytes per letter)</font> <br> | |||
:: <font color="blue"> ''' } ''' </font> <br> | |||
<br> | |||
:: <font color="blue"> ''' | |||
<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> | ||
<br> | <br> | ||
</b></tt> | </b></tt> | ||
=== MultiEx BMS | === MultiEx BMS === | ||
Not written yet | Not written yet<br><br> | ||
=== 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> | |||
1. | <br> | ||
=== Supported Programs === | |||
* [[Game Extractor|Game Extractor]]<br> | |||
Revision as of 12:16, 12 May 2005
BCP
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
byte {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
uint32 {4} - Number Of Files
// for each file
- uint32 {4} - File Offset
- uint32 {4} - Offset To Next File
- uint32 {4} - File Size
- uint32 {4} - Unknown (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)
- }
- uint32 {4} - File ID (incremental, starting from 0)
- // for each sub-directory in this directory {
- // REPEAT FROM "//for each directory"
- }
- // REPEAT FROM "//for each directory"
MultiEx BMS
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