Difference between revisions of "Settlers VI - Rise Of An Empire BBA"

From XentaxWiki
Jump to: navigation, search
(Added archive details, unpack progress and script links.)
Line 112: Line 112:
 
* The hashfunction for the filenames is crc32()
 
* The hashfunction for the filenames is crc32()
 
* The Timestamp is the Windows FILETIME struct
 
* The Timestamp is the Windows FILETIME struct
 +
 +
=== 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  [http://forum.xentax.com/download.php?id=1356 Download NKCSS Data Extractor (NDE) Script]
 +
          144 lngensnd1.bba  -
 +
  28,113,012 lngenvid0.bba  -
 +
          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            [http://forum.xentax.com/download.php?id=1363 Download NKCSS Data Extractor (NDE) Script]
 +
          144  shrlsnd1.bba  -
 +
  496,472,036  shrlvid0.bba  100% Extracted        [http://forum.xentax.com/download.php?id=1364 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.
 +
 +
'''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.
  
 
==== Encryption Table ====
 
==== Encryption Table ====

Revision as of 01:05, 14 October 2007

Back to index | Edit this page

FILE EXTENSION

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

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  -
         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.

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.

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.

MultiEx BMS Script

None written yet.

Supported by Programs

Unknown

Links

None

Games

None