RogueSquadron Extractor - TERRAIN module
Inspired by the work of dpethes (https://github.com/dpethes/rerogue) 👏
This set of git repos are a compilation of tools coded in C to make RS modding far more than a dream! The collection consist of few independants modules, each of them deals with specific data like sound, textures, heightmaps, etc...
All modules are independants. This is the 'TERRAIN' module.
TERRAIN MODULE
It's extract terrain datas from Rogue Squadron 3D (PC) game map files (hmp).
This module can do:
- Interpolate 3D model mesh of the terrain,
- Export it as OBJ model file (pretty heavy (~15MB), not to be use direcly for display),
- Export an heightmap-like PNG,
- Multiple inputs files.
TODO
- Add textures to terrain.
- Adding LOD method to optimize datas manipulation and rendering.
- Discover all last unknowns fields, etc.
Using
RSETerrain [options] <hob files...>
or you can simply drag&drop HOB files on it.
A futur main program can extract all HOB files directly from DAT file. Due to issue with copyrights, I can't provide samples... You need to extract HOB files yourself.

Options
- -h Print this message
- -v,-vv Activate verbose/debug output mode respectively
- -subdir Export outputs to a sub-directory
- -neg Negative heightmap output
Dependencies
- obj-lib: as obj file exporter. (https://git.jcsmith.fr/jackcartersmith/obj)
Compiling
You can compile on both Windows (MinGW) or native Linux system thanks to CMake, you only need to adjust your dependencies on Windows or use Conan packages manager (https://conan.io). zlib-dev (zlib1g-dev) and libpng16-dev distrib packages can be used on debian/ubuntu.
To compile, just clone (don't forget git submodules) and launch cmake:
cmake .
make
make install
On Windows system, I can suggest you to use Conan support to help you with dependencies:
mkdir build
cd build
conan install .. --build=missing
cmake .. -G "MinGW Makefiles"
make
If you want to do it manually without Conan support, you will probably need to specify the dependency flags for CMake. Ex:
cmake.exe -D"ZLIB_INCLUDE_DIR=zlib/1.2.11/include" -D"ZLIB_LIBRARY=zlib/1.2.11/lib/libzlib.dll.a" -D"PNG_PNG_INCLUDE_DIR=libpng/1.6.37/include" -D"PNG_LIBRARY=libpng/1.6.37/lib/libpng.dll.a" . -G "MinGW Makefiles"
We can also use cross-compilation (after installing mingw64
and cmake
packages on your distrib):
mkdir build && cd build
cmake -DGNU_HOST=x86_64-w64-mingw32 \
-DCMAKE_TOOLCHAIN_FILE=../cmake/mingw_cross_toolchain.cmake \
-D"ZLIB_INCLUDE_DIR=zlib/1.2.11/include" \
-D"ZLIB_LIBRARY=zlib/1.2.11/lib/libzlib.dll.a" \
-D"PNG_PNG_INCLUDE_DIR=libpng/1.6.37/include" \
-D"PNG_LIBRARY=libpng/1.6.37/lib/libpng.dll.a" \
..
cmake --build .