Surreal Software Archive (Riot Engine)

From XentaxWiki
(Redirected from The Suffering)
Jump to navigation Jump to 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