/reverse-engineering-outlaws

An attempt to reverse engineer custom file formats used by the game Outlaws from LucasArts.

Primary LanguageC++MIT LicenseMIT

Reverse Engineering LucasArts Outlaws

An attempt to reverse engineer custom file formats used by the game Outlaws from LucasArts.

At present, this project aims at unpacking and repacking the LAB archive format, used by Outlaws to store most of its game assets and resources.

Full support for unpacking and repacking Outlaws LAB archives is implemented already, however, archives generated by my code haven't been tested in the game, so I cannot guarantee that they will work.

A partial description of the LAB format can be found here. It should be noted that the description provided in the previous link doesn't match exactly with what I have encountered in real archives from the game. It is possible that the format described there is from an older version of Outlaws, since the game was patched several times.

In the source/ directory you'll find source code for a couple command line tools:

  • lab_unpack: A very simple tool to unpack a LAB into normal files.

  • lab_pack: The opposite of lab_unpack, packaging a directory into a LAB archive.

The ol/ directory contains C++ source files for libOL, a static library with code and classes to interact with the file formats used by Outlaws.

Building

A premake5 script is included at the root. No other build system is provided right now. The code uses the full feature set of C++11 plus std::make_unique, which is C++14, so you need an up-to-date compiler to build it (only tested on Clang - MacOS).

File-system handling relies on some POSIX functions like opendir, mkdir and stat, but apart from these, the code should be very portable and easy to modify. These dependencies are all localized in a single source file and wrapped into portable functions.

License

This project's source code is released under the MIT License.

Disclaimer:

The goal of this project is to experiment, research, and educate on the topics of game development and game resource management. All information was obtained via reverse engineering of legally purchased copies of the game and information made public on the Internet.