Settlers VI - Rise Of An Empire

From XentaxWiki
Jump to: navigation, search

Back to index | Edit this page

BBA

Format Specifications

char {3}      - Archive Header (BAF)

byte {1}      - Version (4)
uint32 {4}    - Unknown (5)
uint32 {4}    - Header Size (64)
uint32 {4}    - Header Encryption Identifier (0x29D58DC5)


// Header (encrpyted)

uint32 {4}    - Directory Offset Low
uint32 {4}    - Directory Offset High (null)
uint32 {4}    - Directory Length
uint32 {4}    - Directory CRC32 Checksum
uint32 {4}    - Directory Encryption Identifier
byte {44}     - null


// For each file

if (File Type Identifier == 1) {
// The first 16 Bytes are encrypted)
uint32 {4}    - Compressed Size
uint32 {4}    - Decompressed Size
byte {x}      - Compressed Filedata
} else {
byte {x}      - Uncompressed Filedata
}


// Directory (encrypted, compressed)

uint32 {4}    - Directory Header Size (64)
uint32 {4}    - Offset File Entries
uint32 {4}    - Offset File Hashtable
byte {52}     - null


char {3}      - Archive Header (BAF)
byte {1}      - Version (4)
uint32 {4}    - Unknown (5)
uint32 {4}    - Header Size (64)
uint32 {4}    - Header Encryption Identifier (0x29D58DC5)


uint32 {16}   - null
uint32 {4}    - Directory Encryption Identifier
byte {44}     - null


uint32 {32}   - Encryption Table
uint32 {32}   - null
uint32 {32}   - null
uint32 {32}   - null


uint32 {4}    - Number of Files
// For each file
uint32 {8}    - Timestamp
uint32 {4}    - Decompressed Filesize
uint32 {4}    - CRC32 Checksum
uint32 {4}    - Filetype Identifier
uint32 {4}    - null
uint32 {4}    - Offset
uint32 {4}    - null
uint32 {4}    - Compressed Filesize
uint32 {4}    - CRC32 Checksum
uint32 {8}    - null
uint32 {4}    - Filename Length
uint32 {4}    - Filename Offset
int32 {4}     - First Offset
int32 {4}     - Next Offset
char {x}      - Filename
byte {0-3}    - Padding


uint32 {4}    - Hashtable Size
// For each hashtable element
uint32 {4}    - Hash of a Filename
uint32 {4}    - File Entry Offset

Notes and Comments

  • Some files and the directory are compressed using zlib
  • Filetype Identifiers:
    • 0 - Uncompressed file
    • 1 - Compressed file
    • 256 - Directory
  • Initial value for the CRC32 Checksums is 0
  • The encryption algorithm is a modified TEA version (it has the same characteristic bitshifts)
    • There exists multiple versions of the same algorithm but with different 128-bit keys and different deltas
    • The Encryption Identifier will tell you which algorithm to use
  • The hashfunction for the filenames is crc32()
  • The Timestamp is the Windows FILETIME struct

Encryption Table

The data of some files may be compressed or encrypted. The Encryption Table maps the Filetype Identifier to an algorithm that can handle the data. The table has 8 available slots. The Filetype Identifier 0 is mapped to slot 0, Filetype Identifier 1 is mapped to slot 1 and so on...

If a slot is null, the data is neither compressed nor encrypted. Otherwise the slot contains an Encryption Identifier that tells you how to handle the data.

Example: We have a file with File Type Identifier 1. We look at slot 1 of the encryption table and will find the value: 0x9BB3F065. This tells us that we have a file that is compressed and that the first 16 Bytes of the filedata are encrypted with a simple XOR-algorithm.

Archive Details

    filesize filename       status                 downloads
     232,288 lngencfg0.bba  -
         144 lngencfg1.bba  -
  12,518,584 lngengfx0.bba  -
         144 lngengfx1.bba  -
 416,805,060 lngensnd0.bba  100% (ish) Extracted   Download NKCSS Data Extractor (NDE) Script
         144 lngensnd1.bba  -
  28,113,012 lngenvid0.bba  100% Extracted         Download NKCSS Data Extractor (NDE) Script
         144 lngenvid1.bba  -
     263,528 lngnlcfg0.bba  -
         144 lngnlcfg1.bba  -
     578,864 lngnlgfx0.bba  -
         144 lngnlgfx1.bba  -
         144 lngnlsnd0.bba  -
         144 lngnlsnd1.bba  -
         144 lngnlvid0.bba  -
         144 lngnlvid1.bba  -
   2,160,844  shrgcfg0.bba  -
       6,844  shrgcfg1.bba  -
 103,906,496  shrgmap0.bba  -
   5,946,620  shrgmap1.bba  -
 872,928,828  shrlgfx0.bba  -
         144  shrlgfx1.bba  -
     832,868  shrlmnu0.bba  -
         144  shrlmnu1.bba  -
 492,685,476  shrlsnd0.bba  In progress            Download NKCSS Data Extractor (NDE) Script
         144  shrlsnd1.bba  -
 496,472,036  shrlvid0.bba  100% Extracted         Download NKCSS Data Extractor (NDE) Script
         144  shrlvid1.bba  -
  13,485,264  shrtmed0.bba  -
         144  shrtmed1.bba  -

lngensnd0.bba contains 6461 mp3s and can all be extracted. I have marked this archive as completely extracted for the time being.

Files within lngenvid0.bba (made them up myself)
Settlers VI Audio 000 (Crimson Sabatt informs Red Prince, Queen).bik
Settlers VI Audio 001 (Crimson Sabatt informs Red Prince, King).bik
Settlers VI Audio 002 (Crimson Sabatt informs Red Prince Again, Queen).bik
Settlers VI Audio 003 (Crimson Sabatt informs Red Prince Again, King).bik
Settlers VI Audio 004 (Alandra Meets Crimson Sabatt, Queen).bik
Settlers VI Audio 005 (Alandra Meets Crimson Sabatt, King).bik
Settlers VI Audio 006 (Elias Meets Crimson Sabatt, Queen).bik
Settlers VI Audio 007 (Elias Meets Crimson Sabatt, King).bik
Settlers VI Audio 008 (Hakim Meets Crimson Sabatt, Queen).bik
Settlers VI Audio 009 (Hakim Meets Crimson Sabatt, King).bik
Settlers VI Audio 010 (Kestral Meets Crimson Sabatt, Queen).bik
Settlers VI Audio 011 (Kestral Meets Crimson Sabatt, King).bik
Settlers VI Audio 012 (Marcus Meets Crimson Sabatt, Queen).bik
Settlers VI Audio 013 (Marcus Meets Crimson Sabatt, King).bik
Settlers VI Audio 014 (Thordal meets Crimson Sabatt, Queen).bik
Settlers VI Audio 015 (Thordal meets Crimson Sabatt, King).bik
Settlers VI Audio 016 (Red Prince and Crimson Sabatt in chains, Ruined Castle, No History).bik
Settlers VI Audio 017 (Red Prince and Crimson Sabatt in chains, Perfect Castle, Some History, Queen).bik
Settlers VI Audio 018 (Red Prince and Crimson Sabatt in chains, Perfect Castle, Some History, King).bik
Settlers VI Audio 019 (Red Prince and Crimson Sabatt in chains, Perfect Castle, Fireworks, Full History, Queen).bik
Settlers VI Audio 020 (Red Prince and Crimson Sabatt in chains, Perfect Castle, Fireworks, Full History, King).bik


shrlvid0.bba contains 22 .bik file (some audio, mostly video). There is one corrupt file (don't know for sure why since the entire archive is unpacked and all other files work).

Files within shrlvid0.bba (made them up myself)
Settlers VI Video 000 (Blue Byte Audio Track Maybe).bik
Settlers VI Video 001 (Blue Byte Video Track).bik
Settlers VI Video 002 (Crimson Sabatt informs Red Prince).bik
Settlers VI Video 003 (Corrupt Header, Sorry).bik
Settlers VI Video 004 (Crimson Sabatt informs Red Prince again).bik
Settlers VI Video 005 (Alandra Meets Crimson Sabatt).bik
Settlers VI Video 006 (Elias Meets Crimson Sabatt).bik
Settlers VI Video 007 (Hakim Meets Crimson Sabatt).bik
Settlers VI Video 008 (Kestral Meets Crimson Sabatt).bik
Settlers VI Video 009 (Marcus Meets Crimson Sabatt).bik
Settlers VI Video 010 (Thordal meets Crimson Sabatt).bik
Settlers VI Video 011 (Crimson Sabatt Conclusion).bik
Settlers VI Video 012 (Picknick Ruined Castle).bik
Settlers VI Video 013 (Picknick Perfect Castle).bik
Settlers VI Video 014 (Picknick ppl at night with Fireworks over Castle).bik
Settlers VI Video 015 (Red Prince and Crimson Sabatt in chains).bik
Settlers VI Video 016 (Opening Scene Audio Track).bik
Settlers VI Video 017 (Opening Scene Video Track).bik
Settlers VI Video 018 (Crackling Audio).bik
Settlers VI Video 019 (Black Video Frame).bik
Settlers VI Video 020 (Ubisoft Intro Audio Track).bik
Settlers VI Video 021 (Ubisoft Intro Video Track).bik

shrlsnd0.bba contains 3 mp3s performed by the Viking character Thordal in game as his special power. So far i've been able to extract 64 mp3's with success from this archive, but after that, I keep getting 1 good frame, and then rubbish, and this pattern keeps repeating. I have also found some unencrypted/uncompressed PCM Wave headers (RIFF & fmt tags), so I'll try to put that in the mix to get a better picture of the archive composition. The linked script above extracts the 3 mp3s from Throdal.


MultiEx BMS Script

None written yet.

Supported by Programs

Unknown

Links

None

Games

None