Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

harvester-tools

Scripts and tools for working with Harvester's game data files

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Harvester Resource Explorer

Harvester Resource Explorer is a companion tool for the Harvester reverse-engineering work described in the Reverse Engineering Harvester blog series. It loads Harvester data files and exposes a searchable resource browser for inspecting archives, loose assets, decoded images, movies, audio, scripts, dialogue, and raw binary payloads.

The goal is practical format validation while reconstructing the engine: find a resource by path, check which archive or disc it came from, preview the decoded content, and compare behavior against the native game data.

Capabilities

The explorer can discover Harvester archive sets from INDEX.001, INDEX.002, and INDEX.003 sidecars paired with HARVEST.DAT, SOUND.DAT, and HARVEST2.DAT. It also scans loose resources under the selected data root.

Supported resource handling currently includes:

  • DAT / INDEX.00N archive discovery, XFLE index parsing, archive offsets, stored sizes, unpacked sizes, and packed-entry expansion.
  • .BM static bitmap preview with automatic palette lookup and manual palette override.
  • .ABM animated bitmap preview, including frame offsets, RLE decoding, and palette-index-0 transparency.
  • .PAL VGA palette swatch preview.
  • .CMP / FCMP audio decoding to mono PCM for playback through a local audio player such as afplay, ffplay, or aplay.
  • .WAV mono audio playback.
  • .FST movie decoding with video frame preview and PCM audio playback.
  • DIALOGUE.IDX decoding into dialogue id and subtitle rows.
  • .SCR text decoding through Harvester's XOR 0xAA script encoding.
  • Hex preview for resources without a specialized decoder.
  • Search/filtering by source, logical path, type, and size.

The GUI requires Python, Tk, and Pillow.

Usage

Install Pillow, then point the explorer at a Harvester data root:

bash
python3 -m venv .venv
source .venv/bin/activate
pip install Pillow
python3 harvester_resource_explorer.py harvester-demo

Run a headless smoke check against representative resources:

bash
python3 harvester_resource_explorer.py harvester-demo --validate

You can also pass a full game extraction or install directory instead of harvester-demo, as long as the root contains the expected INDEX.00N / DAT pairs or loose Harvester resource files.

Included Demo Data

This repository includes the playable Harvester demo under harvester-demo/ so the explorer has a known test corpus. The demo was sourced from the Internet Archive item "Harvester - demo".

The Harvester demo resources, game content, trademarks, installer files, and bundled third-party redistributables are copyrighted by their respective rightsholders. They are included only as reference material for reverse engineering and format testing. They are not covered by this repository's MIT license.

License

The resource explorer source code and project documentation are licensed under the MIT License. See LICENSE.

The MIT License does not apply to harvester-demo/ or to any Harvester game/demo assets or third-party redistributables contained there. Intel Indeo files in the demo tree retain their own Intel license text.