Surreal Software Archive (Riot Engine)
ADU CDU FDU LDU MDU ODU QDU SDU TDU VDU WDU XDU RRC
- Format Type : Archive
- Endian Order : Little Endian
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
- 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
- uint32 {4} - Unknown
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.
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
- Game Extractor
- opendrakan
- Drakan: Order Of The Flame Level Editor
- Drakan_RRC_Tool.py