OpenPrototype
OpenPrototype is a from-scratch Rust port of the DOS shoot-'em-up Prototype, built by reverse engineering the original game files.
- Type: PC port
- Game: Prototype
- Runs on Windows, Linux and macOS
- By openprototype-game
- Latest release v0.3.0, 2026-07-04
- Source: https://github.com/openprototype-game/openprototype
README
OpenPrototype
An open-source, from-scratch port of Prototype (1995), a DOS shoot-'em-up by NEO Software, to Rust. The original source is lost, so the port is built by reverse engineering the shipped game files, guided by format notes from Erik Pojar, who programmed the original. The name follows OpenTyrian and the other Open* remakes.
It plays from start to finish: all seven levels, enemies, bosses, and the front-end, running off your own copy of the disc image.
Install
One command downloads the latest release, fetches the disc image if you don't already have it, and registers the desktop launcher.
Linux and macOS:
curl -fsSL https://raw.githubusercontent.com/openprototype-game/openprototype/main/install.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/openprototype-game/openprototype/main/install.ps1 | iex
The script asks before pulling the ~270 MB disc image from the Internet Archive.
Already have it? Point the script at your own cue with --cue /path/to/PROTOTYPE.cue (or -Cue on Windows) and it skips the download.
Re-running installs the latest release over the old one; openprototype uninstall removes everything.
On macOS the build isn't signed yet, so the first launch needs a right-click -> Open to get past Gatekeeper.
Controls
In the menus (main menu, jukebox, in-game menu):
- Up / Down: move the selection
- Enter: choose the item
- Esc: back out (resume, from the in-game menu)
Flying a level:
- Arrow keys: fly the ship
- Ctrl: fire
- Shift: switch weapon
- Space: smart bomb
- Esc: open the in-game menu
Any time:
- Alt+Enter: toggle fullscreen
- Alt+S: cycle the scaling mode (perfect fit, or integer vertical scaling for uniform scanlines)
Background
I started on this in 2013. I reached out to Erik Pojar, the original programmer, who was kind enough to answer questions about the file formats, and then spent months disassembling the game by hand in Ghidra. I got the pieces working in isolation: FLI playback, images with their palettes, sound samples. But never anything that actually ran, and I'd come back every so often only to stall in the same spot.
In December 2025 I picked it up again, this time with AI. GitHub Copilot couldn't carry the reverse engineering. A few months later I pointed the latest Opus model at it, and that worked. The format decoders, the disc reader, the front-end, and the level engine followed from there: this time it actually runs, all the way through.
The original game
Prototype was made by NEO Software in 1995:
- Programming: Erik Pojar
- Graphics: Michael Sormann, Peter Baustaedter
- Music: NEO Project, Hannes Seifert, Peter Melchart
- Design: Michael Sormann, Niki Laber
- Additional coding: Christoph Soukup, Peter Melchart
- Testing: Michaela Steurer, Victor Metyko, Niki Ghalustian, Kaweh Kazemi
Thanks especially to Erik Pojar, whose format notes made this port possible.
Layout
reference/: verified reverse-engineering findings (the on-disk formats, the render pipeline, combat, audio, and more).crates/formats/: library of decoders for every on-disk format.crates/disc/: library that reads game files and the OST from the CD image.crates/core/: the platform-independent game logic and state, with no window or audio dependencies, so it stays headless-testable.crates/backend/: the desktop backend, the window, GPU rendering, and audio.crates/game/: theopenprototypebinary (the game itself).crates/install/: per-user desktop install and uninstall (the launcher entry and the icon decoded from the disc).crates/tools/: CLIs for inspecting and extracting assets.crates/integration-tests/: decodes real assets sourced from the CD image (gated behind thedisc-testsfeature; see below).
The disc image
The game shipped as a mixed-mode bin/cue CD: an ISO9660 data track with the game
files plus CD-DA tracks holding the soundtrack. Rather than bundle the
copyrighted files, the port reads them straight off the original image, which
you supply yourself. Download it from the Internet Archive
(archive.org/details/prototype-1995)
and drop PROTOTYPE.bin / PROTOTYPE.cue at the repo root (they are
git-ignored). crates/disc/ reads both the files and the original-quality OST
from it; see reference/formats/disc.md. Set $PROTOTYPE_DISC to point the
tools at a cue elsewhere. The installer above can fetch the same image for you.
Tests that need the image are gated behind a disc-tests feature and are
#[ignore]d without it, so a plain cargo test skips them honestly (it reports
them as ignored, never as passed). Run them with the image in place:
cargo test --workspace --features disc-tests