gob-rs
A Rust library for parsing, constructing, and generating archives of the LucasArts GOB format.
This implementation has been tested to work with GOB files of:
- Indiana Jones and the Infernal Machine
- Star Wars Jedi Knight: Dark Forces II
For a GOB archiver/unarchiver using this library, see gob-archive.
Examples
Parsing GOB File
use Path;
use Gob;
Parsing GOB-Like* Directory
*That is, a directory structured like a GOB archive.
use Path;
use Gob;
Generating GOB file data
use PathBuf;
use Gob;
let mut gob = new;
gob.files.insert;
gob.files.insert;
let data = gob.as_bytes;
Specification
GOB files are used by LucasArts games built on the Sith engine as an archive format for storing game files.
They are encoded in the little-endian format.
The file structure can be abstracted as follows:
Gob
Header
Body
File
Limitations
One major limitation that arises due to the strict memory definitions of the file format is that the relative paths of files within a GOB archive may at most be 128 ASCII characters (or 128 bytes) long.
Another limitation is that due to the 32-Bit architecture of the format, GOB archives can at most reach a size of about 4 GB before breaking due to being unable to reference data offset past the 32-Bit limit.
License
This library is dual-licensed under the MIT license and Apache License, Version 2.0.