Operation Body Count Reborn

Operation Body Count Reborn is a native PC port of Operation Body Count offering modern enhancements like high resolution and Internet multiplayer.

README

OBCR — Operation Body Count Reborn

OBCR is a native source port of Operation Body Count (Capstone Software, 1994), written from scratch in Rust on SDL 3 and rebuilt from the original executable.

It plays the original game, floor for floor and tic for tic, from your own copy of the game files. You can play it in the original 320×200 picture, or in a modern one: high resolution and widescreen, smooth motion, xBRZ-upscaled textures, mouse and gamepad controls, and network play over the Internet.

Status: beta, in testing. The whole single-player game and network play run. Behaviour follows the disassembly of the original, but it has not yet been compared frame by frame with the original running in DOSBox-X. The current version is 1.0.0-beta.2 (CHANGELOG.md, releases); progress is tracked in docs/STATUS.md.

🎮 The controls are modern by default

W A S D to move, the mouse to turn and fire, Space or E to open doors and push walls, Shift to run, Q / Z / F for your allies.

That is not what Operation Body Count shipped with in 1994: the original moved with the arrow keys, sidestepped with Alt and opened things with Space. Pick the original scheme under OPTIONS → CONTROL SCHEME, and change any key under OPTIONS → KEY BINDINGS. See Controls.


Contents


Why does this exist?

Operation Body Count is one of the stranger children of Wolfenstein 3D: a licensed Wolf3D engine pushed into a whole extra set of systems, including squads of allies you can swap bodies with, a flamethrower that sets rooms on fire, grenades that blow holes in walls, floors with lights you can switch off, swamp creatures that splatter your visor with slime, and network deathmatch in 1994.

Its source code was never released. Today Steam and GOG sell it as the original DOS program running inside DOSBox, which works, but keeps it at 320×200 with DOS-era controls and no modern network play.

OBCR is a port without source code. Every behaviour comes from the original executable: the Wolfenstein 3D source code (which id Software released) serves as a starting hypothesis, and each function is checked against the disassembly of COUNT.EXE, with the differences written down as it goes. The knowledge base in docs/re/ records what was found, where in the executable it was found, and how sure we are of it.

The project is developed by AI coding agents (Anthropic's Claude) under the owner's direction, following written rules for evidence, testing and fidelity (CLAUDE.md, docs/AGENT_GUIDE.md). Nothing from the original game is included in this repository: no data, no extracted art or sound, no decompiled code.


About Operation Body Count

The Government has launched a top-secret military offensive against the foreign troops occupying the U.N. towers. Code name…

— the original's opening screen

You go in through the sewers beneath the United Nations, fight up through the maintenance level and every floor of the first UN tower, cross to the second tower and fight to its roof, where the man behind it all waits. As the original's manual supplement put it: "Game victory? Kill Victor."

What sets it apart from its Wolfenstein 3D ancestry:

  • 40 floors in four stretches: five sewer levels, a maintenance level, the 17 floors of UN Building 1 from the lobby to the top, then the 17 floors of Building 2. Ten more floors are network arenas.
  • A body count, not a key hunt. A floor's exit (stairs, a ladder or an elevator) only lets you leave once half of the floor's enemies are dead. A lamp on the status bar turns from red to yellow at half and to green when everyone is dead; trying to leave early earns you UNFINISHED BUSINESS.
  • Allies. Friendly soldiers wait on many floors. Tell them to follow you or to spread out and fight. Or switch into one of them, taking over their body and health while keeping your guns, and optionally leave your old body standing guard.
  • Five weapons: an assault shotgun, an Uzi, a Galil, a flamethrower that sets whatever it touches alight, and a grenade launcher whose blasts break walls (and hurt you, if you stand too close).
  • A destructible, living building: walls that crack and break, fires that spread and burn out, booby traps, generators whose switches plunge a floor into darkness, push walls hiding secret rooms, tremors that shake the screen, and splats of blood and slime across your visor that you have to wipe off.
  • Enemies from soldiers to sewer things: rats and giant rats, soldiers who ambush you from stools, toilets and the floor, men in black suits, swamp creatures, fat men who climb out of manholes, saucer drones, red giants, and finally Victor.
  • Network play in 1994: deathmatch, team play and two-player modem games on floors built for it.

The full player's guide is docs/game-guide.md.

Technical profile of the original
Year, publisher1994, Capstone Software (IntraCorp)
EngineA licensed and heavily modified Wolfenstein 3D engine
ExecutableCOUNT.EXE (floppy release, 235,440 bytes) or BCCD.EXE (CD release, 237,056 bytes): Borland C++, 16-bit real mode, not packed
Data filesWolf3D's family of files with a .BC extension
MapsMAPTEMP.BC and MAPHEAD.BC: 61 map slots, 64×64 tiles, RLEW compression only (no Carmack layer)
Walls, sprites, soundsGFXTILES.BC, Wolf3D's VSWAP page file: 680 sprites on the floppy, 668 on the CD
Screens, fonts, status barVGAHEAD.BC, VGADICT.BC, VGAGRAPH.BC
Music and effectsAUDIOHED.BC, AUDIOT.BC: AdLib music (IMF) and AdLib/PC-speaker effects
Digitized soundAUDIOMUS.BC: 99 sounds at 9,009 Hz, in the same layout as Corridor 7's
Animated sequencesFLC animations F1.BC–F7.BC; F1, F5 and F7 exist only on the CD
CD musicFour Red Book audio tracks on the CD
PalettesStored inside the executable

What OBCR adds, and what it keeps

It keeps the game. The simulation runs at the original's 70 Hz tic rate with its integer arithmetic, its random-number table and its quirks. Classic mode shows the original 320×200 picture with the original's renderer: the per-tile floors and ceilings with their grout lines, the shading, the see-through walls and the two-part hand weapon.

It adds, in Enhanced mode (the default):

  • Resolution and shape: 2× to 8× the original resolution, at 4:3, 16:10, 16:9 or 21:9 (wider views show more to the sides, as Wolf3D ports do), windowed or fullscreen, with optional integer scaling and a smoothing filter.
  • Smooth motion: the view and every actor are drawn between game tics, so the picture moves at your monitor's refresh rate while the game still runs at 70 Hz.
  • xBRZ textures: walls, doors, floors, ceilings, enemies, items and the weapon upscaled 2× to 6× with xBRZ. Shading, damage flashes and fades still work, because the upscale is done on palette indices. The menus, pictures and animated sequences can be upscaled too.
  • Smooth floors: floors and ceilings drawn in true perspective and continuous across tiles, without the original's banding.
  • Modern controls: WASD and the mouse, gamepads with analogue movement and rumble, and full rebinding of every action for keyboard, mouse and gamepad.
  • Sound: up to four digitized voices mixed instead of the original's single Sound Blaster voice; the original AdLib and PC-speaker effects remain available.
  • The CD release in full: install straight from the Steam or GOG disc image, with its movies, its gameplay changes and its CD music ripped from the image (docs/cd-release.md).
  • Network play over UDP, on a LAN or across the Internet, for up to 12 players (docs/multiplayer.md).
  • Settings in one readable file (obcr.toml), saved games in your user profile, and the original's ten save slots, AutoSave and F9 quick save.

It fixes two things that could leave a floor unfinishable, as deliberate departures from the original (DECISIONS.md): grenades and fires no longer destroy a floor's exits or seal its doors (ADR-016), and kills by your allies count toward the exit's quota (ADR-018), though they still earn no points.

Every option is described in docs/options.md.


Documentation

For players

DocumentWhat it is
docs/game-guide.mdThe player's guide: floors, the body count, weapons, items, enemies, allies, hazards and the original's own tips.
docs/options.mdEvery menu option, every command-line option, the settings file, and where OBCR keeps things.
docs/cd-release.mdPlaying the Steam/GOG CD release: installing from the disc image, the movies, the CD music and how the CD version plays differently.
docs/multiplayer.mdNetwork play: game types, setting up a LAN or Internet game, ports and routers, the rules, troubleshooting.
installer/README.mdOBCR Setup: what it installs, where, the command line, and how the installers are built.
docs/obcr.6A manual page (man -l docs/obcr.6).
CHANGELOG.mdWhat changed in each release.

For developers and the curious

DocumentWhat it is
docs/DESIGN.mdThe design: goals, the fidelity model, architecture, every subsystem, verification.
docs/DECISIONS.mdArchitecture decision records: every significant choice and why (ADR-001 onward).
docs/MECHANICS_AUDIT.mdEvery Operation Body Count mechanic, what the original's code does, and where OBCR implements it.
docs/re/The reverse-engineering knowledge base: file formats, the executable's layout, actors, player, allies, renderer, audio, game flow, network, the CD release, and open questions. Every claim carries a confidence grade and a citation.
docs/ci.mdThe test gates, what GitHub Actions runs and cannot run, and how a release is cut.
docs/STATUS.md, docs/MILESTONES.mdWhere the project stands, and the milestone plan it follows.
docs/AGENT_GUIDE.md, CLAUDE.mdThe rules the AI agents that develop OBCR work by.
THIRD_PARTY_NOTICES.mdThird-party components and their licences.

Getting the game data

This repository contains no Operation Body Count data. You need your own copy. OBCR recognizes two releases by the SHA-256 of their files:

ReleaseWhere you get itWhat OBCR needs
The CD release (BCCD.EXE)Steam and GOG sell it; both ship the CD as a BIN/CUE disc imageThe .cue file (with its .bin beside it). Setup takes the files, the movies and the music straight off the image.
The floppy release (COUNT.EXE, files dated 1996-12-24)Old retail floppies and their copiesThe folder with the game files.

The CD image is the best source: it is the only one with the opening, map 22 and victory movies and the CD music. A Steam installation's C/BCCD folder holds the CD release's files too and works as a folder, but without the music.

These are the files OBCR uses. Everything else in an installation (SETUP.EXE, INSTALL.EXE, README.EXE, the batch files, GFXINFOV.BC, CONFIG.DAT and DOS saved games) is ignored:

COUNT.EXE  or  BCCD.EXE    the executable: OBCR reads its tables and palettes      required
GFXTILES.BC                walls, sprites and some digitized sounds                required
MAPHEAD.BC, MAPTEMP.BC     the maps                                                required
VGAHEAD.BC, VGADICT.BC,    screens, fonts, status bar and menu art                 required
VGAGRAPH.BC
AUDIOHED.BC, AUDIOT.BC     AdLib music and AdLib/PC-speaker effects                required
AUDIOMUS.BC                the 99 digitized sounds                                 required
F2.BC F3.BC F4.BC F6.BC    animated sequences (floor changes, death)               optional
F1.BC F5.BC F7.BC          the CD's movies (opening, map 22, victory)              optional, CD only
TRACK02.QOA .. TRACK05.QOA the CD music, ripped from the image by Setup            optional, CD only

The executable is required because Operation Body Count keeps its behaviour tables (every enemy's animation states, the weapons' timing, the items) and its palettes inside it. OBCR reads them at start-up; nothing is copied into OBCR itself. A missing sequence is skipped silently, as the original does.

The files must match a known release exactly. Patched, cracked or otherwise modified executables are refused, because the tables would not be where OBCR looks for them. The shareware release has not been examined yet and is not recognized.


Installing

If you wantUse
the usual way, on Windows or LinuxOBCR Setup, the graphical installer
a scripted or unattended installSetup from a terminal
no installer at allThe game on its own
to compile it yourselfBuilding from source

Whichever route you take, OBCR keeps your settings and saved games in your user profile, never in the game folder (see Running it).

OBCR Setup

Download the installer for your system from the releases page:

  • Windows (64-bit): OBCR-Setup-<version>-windows-x64.exe. It is not code-signed, so SmartScreen warns the first time: choose More info → Run anyway.
  • Linux (x86-64, glibc 2.35 or newer, such as Ubuntu 22.04 and later): OBCR-Setup-<version>-linux-x86_64. Make it executable (chmod +x) and run it. It carries its own Qt; the graphics drivers, X11 or Wayland and the sound system come from your desktop.

Setup installs for your user account only and never asks for administrator rights. Its pages:

  1. Your game files. Choose CD image… and pick the .cue of the Steam or GOG edition, or Folder… for a folder with the game files. Setup suggests the images and folders it finds in the usual Steam and GOG locations. It checks every file against the known releases and tells you what it found: the release, how many files it will copy, how many animated sequences, and from a CD image how many music tracks it will rip.
  2. Installation folder. By default %LOCALAPPDATA%\Programs\OBCR on Windows and ~/.local/opt/OBCR on Linux. It must be new, empty, or an earlier OBCR installation (which is then updated). Choose whether you want menu entries, a desktop shortcut and, on Linux, an obcr command in ~/.local/bin.
  3. Installing. The game, the game files it uses and, from a CD image, the ripped music (about 57 MB, about 15 seconds) go into the folder, with an uninstaller.

The result:

<folder>/obcr[.exe]          the game
<folder>/data/               your game files (and TRACK02.QOA .. from a CD image)
<folder>/uninstall/          the uninstaller
<folder>/install-manifest.txt   everything Setup created, for the uninstaller

On Windows OBCR appears in the Start menu and in Settings → Apps; on Linux in your applications menu. Running Setup again offers to update or remove the installation.

Setup from a terminal
OBCR-Setup --unattended --data /path/to/BODYCOUNT.cue
OBCR-Setup --unattended --data /path/to/game/folder --target ~/Games/OBCR --desktop-shortcut
OBCR-Setup --uninstall --unattended

Unattended runs print their progress and exit with 0 on success, 1 on failure and 2 when the game files are incomplete. All options: installer/README.md.

The game on its own

The game is a single executable with no installation step. Build it (Building from source) or take obcr from an installation, and point it at the game files:

obcr --data /path/to/game/folder

From a CD image, extract the files first. This does exactly what Setup does, music included:

obcr --extract-data /path/to/BODYCOUNT.cue ~/Games/OBC-data
obcr --data ~/Games/OBC-data

Without --data, OBCR looks in this order: the OBC_DATA_DIR environment variable; data_dir in the settings file; the folders OBC, data or the executable's own folder next to the executable; Steam's default Operation Body Count/C/BCCD folder.

Uninstalling

Use Settings → Apps (Windows), the Uninstall OBCR menu entry, <folder>/uninstall/OBCR-Uninstall, or Setup itself. It removes exactly what the installation created. Your settings and saved games stay unless you tick the box to remove them too (--purge from a terminal).


Running it

Start OBCR from the menu entry, or run obcr. You get the original's opening (the CD release's movie first, then the story page and the title), then the main menu:

Main menu
START GAMEBegin on floor 1 with the current game type
GAME TYPEDifficulty 1–3, Random, or the network types N, T and M
VIEW SIZEThe size of the 3D view
LOAD GAME / SAVE GAMETen slots; the last holds the AutoSave written before every floor
AUDIO MIXOBCR's OPTIONS, opened at the sound settings
HIGH SCORES, CONTINUE, ABORT GAME, EXIT TO DOSAs in the original
OOBCR's OPTIONS: display, textures, controls, key bindings, sound and music
HThe original's help page, followed by the key bindings
Where things goWindowsLinux
Settings (obcr.toml)%APPDATA%\OBCR\config\~/.config/obcr/
Saved games%APPDATA%\OBCR\data\saves\~/.local/share/obcr/saves/
The game fileswherever you installed them; OBCR never writes therethe same

--config FILE puts the settings file elsewhere, with saved games in a saves folder beside it. Useful command-line options:

obcr --classic                       # the original 320x200 picture
obcr --scale 6 --aspect 21:9         # Enhanced at 6x, ultra-wide
obcr --fullscreen
obcr --xbrz 0 --floors original      # Enhanced resolution, original-looking textures
obcr --play 6 --difficulty 2         # straight onto floor 7 (map slot 6), difficulty 3
obcr --nsr250                        # the original's cheat parameter (see the game guide)
obcr --help                          # all of them

The complete list, the settings file and every menu option are in docs/options.md. Alt+Enter toggles fullscreen at any time.


Controls

The defaults are modern, not the original's. Out of the box you move with W A S D, turn with the mouse and open things with Space or E. Operation Body Count in 1994 moved with the arrow keys, sidestepped by holding Alt, and opened things with Space. Switch with OPTIONS → CONTROL SCHEME. Each scheme comes with its own defaults.

ActionModern (default)OriginalGamepad