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.
- Type: PC port
- Game: Operation Body Count
- Runs on Windows and Linux
- By jeddhor
- Latest release v1.0.0-beta.1, 2026-11-06
- Source: https://github.com/jeddhor/OBCR
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?
- About Operation Body Count
- What OBCR adds, and what it keeps
- Documentation
- Getting the game data
- Installing
- Running it
- Controls
- Multiplayer
- When it goes wrong
- Building from source
- How it is built
- Testing
- Known deviations
- Credits
- Legal
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, publisher | 1994, Capstone Software (IntraCorp) |
| Engine | A licensed and heavily modified Wolfenstein 3D engine |
| Executable | COUNT.EXE (floppy release, 235,440 bytes) or BCCD.EXE (CD release, 237,056 bytes): Borland C++, 16-bit real mode, not packed |
| Data files | Wolf3D's family of files with a .BC extension |
| Maps | MAPTEMP.BC and MAPHEAD.BC: 61 map slots, 64×64 tiles, RLEW compression only (no Carmack layer) |
| Walls, sprites, sounds | GFXTILES.BC, Wolf3D's VSWAP page file: 680 sprites on the floppy, 668 on the CD |
| Screens, fonts, status bar | VGAHEAD.BC, VGADICT.BC, VGAGRAPH.BC |
| Music and effects | AUDIOHED.BC, AUDIOT.BC: AdLib music (IMF) and AdLib/PC-speaker effects |
| Digitized sound | AUDIOMUS.BC: 99 sounds at 9,009 Hz, in the same layout as Corridor 7's |
| Animated sequences | FLC animations F1.BC–F7.BC; F1, F5 and F7 exist only on the CD |
| CD music | Four Red Book audio tracks on the CD |
| Palettes | Stored 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
| Document | What it is |
|---|---|
| docs/game-guide.md | The player's guide: floors, the body count, weapons, items, enemies, allies, hazards and the original's own tips. |
| docs/options.md | Every menu option, every command-line option, the settings file, and where OBCR keeps things. |
| docs/cd-release.md | Playing the Steam/GOG CD release: installing from the disc image, the movies, the CD music and how the CD version plays differently. |
| docs/multiplayer.md | Network play: game types, setting up a LAN or Internet game, ports and routers, the rules, troubleshooting. |
| installer/README.md | OBCR Setup: what it installs, where, the command line, and how the installers are built. |
| docs/obcr.6 | A manual page (man -l docs/obcr.6). |
| CHANGELOG.md | What changed in each release. |
For developers and the curious
| Document | What it is |
|---|---|
| docs/DESIGN.md | The design: goals, the fidelity model, architecture, every subsystem, verification. |
| docs/DECISIONS.md | Architecture decision records: every significant choice and why (ADR-001 onward). |
| docs/MECHANICS_AUDIT.md | Every 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.md | The test gates, what GitHub Actions runs and cannot run, and how a release is cut. |
| docs/STATUS.md, docs/MILESTONES.md | Where the project stands, and the milestone plan it follows. |
| docs/AGENT_GUIDE.md, CLAUDE.md | The rules the AI agents that develop OBCR work by. |
| THIRD_PARTY_NOTICES.md | Third-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:
| Release | Where you get it | What OBCR needs |
|---|---|---|
The CD release (BCCD.EXE) | Steam and GOG sell it; both ship the CD as a BIN/CUE disc image | The .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 copies | The 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 want | Use |
|---|---|
| the usual way, on Windows or Linux | OBCR Setup, the graphical installer |
| a scripted or unattended install | Setup from a terminal |
| no installer at all | The game on its own |
| to compile it yourself | Building 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:
- Your game files. Choose CD image… and pick the
.cueof 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. - Installation folder. By default
%LOCALAPPDATA%\Programs\OBCRon Windows and~/.local/opt/OBCRon 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, anobcrcommand in~/.local/bin. - 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 GAME | Begin on floor 1 with the current game type |
| GAME TYPE | Difficulty 1–3, Random, or the network types N, T and M |
| VIEW SIZE | The size of the 3D view |
| LOAD GAME / SAVE GAME | Ten slots; the last holds the AutoSave written before every floor |
| AUDIO MIX | OBCR's OPTIONS, opened at the sound settings |
| HIGH SCORES, CONTINUE, ABORT GAME, EXIT TO DOS | As in the original |
| O | OBCR's OPTIONS: display, textures, controls, key bindings, sound and music |
| H | The original's help page, followed by the key bindings |
| Where things go | Windows | Linux |
|---|---|---|
Settings (obcr.toml) | %APPDATA%\OBCR\config\ | ~/.config/obcr/ |
| Saved games | %APPDATA%\OBCR\data\saves\ | ~/.local/share/obcr/saves/ |
| The game files | wherever you installed them; OBCR never writes there | the 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.
| Action | Modern (default) | Original | Gamepad |
|---|---|---|---|