Starship Troopers SLAK
Posted: Sat Sep 10, 2005 9:53 pm
Help extract SLAK archives for game Starship Troopers
thx
thx
Code: Select all
char (16) - GRAIS (SlackPackFile) ("null"-terminated)
uint32 (04) - Absolute Offset to Directory
uint32 (04) - Unknown
uint32 (04) - Unknown (4608)
uint32 (04) - Unknown (4)
uint32 (04) - Amount of Files
uint32 (04) - Unknown
uint32 (04) - Unknown
// For each file
uint32 (04) - Relative Offset to correct Relative Path - from the start of the path entries.
uint32 (04) - Unknown (3131961357)
uint32 (04) - Unknown
uint32 (04) - Unknown (29724392)
uint32 (04) - Compressed File Length
uint32 (04) - Uncompressed File Length
uint32 (04) - Absolute File Offset
uint32 (04) - Null
uint32 (04) - Null Terminator Length for the file's relative path?
uint32 (04) - Unknown
// For each file
char (x) - relative path with filename (null terminated)
byte (x) - file dataCode: Select all
+--------------------------+
| Starship Troopers *.slak |
+--------------------------+
// Uses ZLib compression
// ARCHIVE HEADER
16 - Header ("SlackPackFile " + null)
4 - Directory Offset
4 - File Entry length (40)
4 - Unknown
4 - Unknown
4 - Number Of Files
4 - Filename Directory Length
4 - Unknown
// DIRECTORY
// for each file (40 bytes for each entry)
4 - Filename Offset (relative to the start of the filename directory)
4 - Unknown
8 - Hash?
4 - Compressed File Length
4 - Decompressed File Length
4 - File Offset
4 - null
4 - Unknown (1)
4 - Unknown
// FILENAME DIRECTORY
// for each file
X - Filename
1 - null Filename Terminator
// FILE DATA
// for each file
X - File DataCode: Select all
# SlackPackFile (script 0.1.1)
# script for QuickBMS http://quickbms.aluigi.org
idstring "SlackPackFile \0"
get DIRECTORY_OFFSET long
get FILE_ENTRY_LENGTH long
get DUMMY long
get DUMMY long
get FILES long
get FILENAME_DIRECTORY_LENGTH long
get DUMMY long
math FILENAME_DIRECTORY_LENGTH = FILES
math FILENAME_DIRECTORY_LENGTH *= 40
math FILENAME_DIRECTORY_LENGTH += DIRECTORY_OFFSET
goto DIRECTORY_OFFSET
for i = 0 < FILES
get NAME_OFF long
get DUMMY long
get DUMMY longlong
get ZSIZE long
get SIZE long
get OFFSET long
get DUMMY long
get DUMMY long # not the zip!
get DUMMY long
savepos TMP
math NAME_OFF += FILENAME_DIRECTORY_LENGTH
goto NAME_OFF
get NAME string
goto TMP
if SIZE == ZSIZE
log NAME OFFSET SIZE
else
clog NAME OFFSET ZSIZE SIZE
endif
next i