Surreal Software Archive (Riot Engine)

From XentaxWiki
(Redirected from Surreal Software Archive)
Jump to: navigation, search

ADU CDU FDU LDU MDU ODU QDU SDU TDU VDU WDU XDU RRC


Format Specifications (The Suffering, version 1.1)

// ARCHIVE HEADER

char {4}     - Header (SRSC)
byte {2}     - Version (1,1)
uint32 {4}   - Files Directory Offset
uint32 {4}   - Number Of Files [-1]


// FILE DATA

// for each file
byte {X}     - File Data


// FILES DIRECTORY

uint32 {4}   - Unknown (1026)
uint16 {2}   - null
uint32 {4}   - File Data Length
uint32 {4}   - Unknown (10)


// for each file (14 bytes per entry)
uint32 {4}   - Unknown
uint16 {2}   - File Type ID?
uint32 {4}   - File Offset
uint32 {4}   - File Size


Format Specifications (Drakan, version 0.1)

// Drakan
// RRC file format

// little endian

// header
4 bytes (char) - magic // "SRSC"
2 bytes - version  // 0x00 0x01
4 bytes (uint32) - directory offset
2 bytes (uint16) - number of files


// data
number_of_files *
{
   x bytes - file data
}


// directory
number_of_files *
{
   2 bytes (uint16) - file type  // "0x40 0x00" (64) - texture data
                                 // "0x00 0x04" (1024) - encrypted text
                                 // "0x01 0x04" (1025) - plain text
                                 // etc. etc.
   2 bytes (uint16) - file ID
   2 bytes (uint16) - group ID
   4 bytes (uint32) - file offset
   4 bytes (uint32) - file size
}

MultiEx BMS

Not written yet.

QuickBMS

Notes and Comments

  • This is archive file format used by the Riot Engine by Surreal Software company.
  • Some files inside archive may be compressed with ZLIB compression.

Decryption Method

Strings are encrypted with custom XOR algorithm.
Below is Python implementation of decryption method:

def decrypt_data(in_data_str, in_data_len):   
    key = 0x5FDD390D
    out_data = b''
    for i in range(in_data_len):
        out_data += xore(struct.pack("B", in_data_str[i]) , struct.pack("B", key & 0xFF))
        key = (key<<3) | (key>>(32-3))
        
    return out_data

Games

List of games using this file format:

  • Drakan: Order of the Flame
  • Drakan: The Ancients' Gates
  • The Lord of the Rings: The Fellowship of the Ring (needs confirmation!)
  • The Suffering
  • The Suffering: Ties That Bind
  • Gunslinger (cancelled game) (needs confirmation!)
  • The Lord of the Rings: The Treason of Isengard (cancelled game) (needs confirmation!)

Supported Programs