This is the specifications for the archive file which is handled by the Game Extractor plugin Archive_SAB_CSW2.

Endian Order:Little Endian
Compression:None
Encryption:None


This format is used by the following Games:
Just Cause *.sab


This is the format specification information:
 
// SAB FILE
  // ARCHIVE HEADER
    4 - Header (CSW2)
    4 - Unknown
    4 - Number Of Files
    4 - Padding Multiple (32)
    4 - Unknown
    4 - Unknown

  // DIRECTORY
    // for each file
      4 - Unknown (1)
      4 - Number Of Channels in Audio? (1/2)
      4 - Audio Quality (22050)
      4 - File Length
      8 - null
      4 - File Offset (relative to the start of the file data)

    X - null Padding to a multiple of 32 bytes

  // FOLDERS DIRECTORY
    4 - Number Of Folders
    4 - null

    // for each folder
      4 - Folder ID?
      4 - Folder Name length
      X - Folder Name

    X - null Padding to a multiple of 32 bytes

  // FILE DATA
    // for each file
      X - File Data
      X - null Padding to a multiple of 32 bytes



// SOB FILE
  // ARCHIVE HEADER
    4 - Header (CTF2)
    4 - Unknown
    4 - Number Of Files
    4 - Unknown

  // DIRECTORY
    // for each file
      1 - Entry Length (0=72, 5=136, 9=140)
      1 - Unknown (0/1)
      2 - null

      if (a 72-byte entry){
        4 - Padding (-1)
        24 - null
        4 - Unknown (1/2)
        8 - null
        4 - Unknown (1)
        4 - Unknown (35)
        4 - File ID
        16 - null
        }
      else if (a 136-byte entry){
        4 - Padding (-1)
        24 - null
        4 - Unknown (1/2)
        34 - null
        4 - Unknown
        4 - Unknown
        4 - Unknown
        4 - Unknown
        10 - null
        4 - Unknown (360)
        4 - Unknown (360)
        4 - null
        }
      else if (a 140-byte entry){
        4 - Padding (-1)
        24 - null
        4 - Unknown (1/2)
        34 - null
        4 - Unknown
        4 - Unknown
        4 - Unknown
        4 - Unknown
        4 - Unknown
        6 - null
        4 - Unknown (360)
        4 - Unknown (360)
        8 - null
        4 - Unknown (9)
        4 - Unknown (2)
        8 - null
        4 - Unknown (9)
        4 - Unknown (3)
        4 - null
        }

  // UNKNOWN DIRECTORY (optional)
    // for each XXX
      4 - null
      4 - Unknown (11)
      4 - File ID?
      8 - null
      4 - Unknown (100)
      4 - Unknown (300)


  // FILENAME DIRECTORY
    // for each file
      4 - File ID (incremental from 0)
      4 - Filename Length
      X - Filename


These are the accompanying notes and further information:
 
SAB contains the file data, SOB contains the details


Game Extractor is able to read files of this type, as well as files from thousands of other games. To give it a try, download Game Extractor (Basic Version) for free, and see what it can do.

For further information on this format, refer to the source code on our GitHub repository.