This repository is a source-faithful native C/C++ reconstruction of the Windows x86 engine for Zipper Interactive's 1999 game Recoil. It is a reconstruction effort, not a modern port.
Success has one exact definition: an unrestricted VC5SP3 compile and link of
the reconstructed source must reproduce every typed, acceptance-relevant
semantic fact in the immutable retail reference support/Recoil.exe. This
includes complete function population and order, object and linked bytes,
relocations and targets, data, resources, imports, providers, PE layout, and
all catalogued padding. The linker-written COFF timestamp and the resulting raw
whole-file difference are diagnostics, not acceptance gates. Behavioral
similarity, post-link patching, or a matching subset of the executable do not
satisfy the goal.
The unified tracker coordinates six stages with independently monotonic primary and authored-byte lanes that join before resolved linked-byte traversal:
authored-function-orderrecovers the natural VC5SP3 order of source-authored and authored-lifecycle bodies across retail.text.authored-call-contractchecks the static invocation contract of every currently reviewed physical authored gating body in deterministic retail-contiguous slices.- Independently,
authored-byte-matchproves each gating authored contribution at the object, relocation, symbolic-target, and relocation-normalized linked-body level. - After all authored call contracts are current,
full-function-orderrestarts at the beginning without waiting for authored bytes and recovers the complete linked contribution set, retail addresses, order, and seams, including compiler, runtime, framework, and provider rows. - Once full order and authored-byte traversal have both completed,
linked-byte-matchproves every resolved linked address, relocation operand, reference target, and linked byte sequence. final-validationderives complete typed final-image coverage live from retail plus accepted tracker facts, then checks one fresh unrestricted build. No unmodelled byte range may pass. Raw file differences and the COFF timestamp are reported only to aid diagnosis.
The source remains deliberately compatible with the recovered late-1990s
Windows compiler, ABI, SDK, MFC, and DirectX boundaries. Modern-language or
modern-library helpers may be used in host-side tools and tests; they are never
substitutes for source-faithful production reconstruction under src/.
src/Battlesport— reconstructed game shell and gameplay-facing source.src/GameZRecoil— reconstructed engine subsystems.cmake/recoil_native— native target wiring outside the reconstructed production source tree.tools/_recoil/compat/include— compiler, calling-convention, and ABI compatibility bridges used by governed builds.tests/nativeandtests/tools— focused behavior, ABI, guard, and tooling verification.tools— local reconstruction and verification infrastructure.docs/reconstruction— durable evidence and reconstruction runbooks.export— analysis exports used as supporting recovery evidence.
The canonical reproduction runbook is
docs/reconstruction/retail_executable_reproduction.md.
Physical source-block and semantic-span mapping are internal reconstruction
state; durable placement evidence is documented in
source_file_layout_audit.md.
The tool-managed unified tracker is the only progress authority.
The public repository is source-only. It does not redistribute the original game executable, game data, extracted assets, decompiler databases, legacy SDK payloads, redistributable DLLs, or compiler toolchains.
Generated from the unified reconstruction tracker. The tracker remains the sole progress authority.
| Stage | State | Accepted / total | Frontier | Typed blocker |
|---|---|---|---|---|
| authored-function-order | complete | 121 / 121 | 0x4cb9e8 | — |
| authored-call-contract | current | 0 / 3369 | 0x401000 | — |
| authored-byte-match | blocked | 14 / 3369 | 0x401d50 | retail byte frontier shares an active primary source-edit physical block |
| full-function-order | waiting | 0 / 121 | 0x401000 | — |
| linked-byte-match | waiting | 0 / 4974 | 0x401000 | — |
| final-validation | waiting | typed whole image | — | — |
| authored object-byte preparation (subordinate) | blocked | 15 / 3369 | 0x401e50 | object byte frontier shares an active primary source-edit physical block |
| Binary | Owners | Authored owners | Provider boundaries |
|---|---|---|---|
| recoil | 1268 | 1200 | 68 |
| messages | 1 | 1 | 0 |
| Total | 1269 | 1201 | 68 |
| Gate | accepted | blocked | deferred | none | pending | Total |
|---|---|---|---|---|---|---|
| boundary | 1252 | 6 | 0 | 1 | 10 | 1269 |
| source | 1243 | 10 | 0 | 1 | 15 | 1269 |
| data | 985 | 5 | 0 | 215 | 64 | 1269 |
| functional | 806 | 0 | 0 | 346 | 117 | 1269 |
| linkage | 1025 | 143 | 0 | 88 | 13 | 1269 |
| byte | 22 | 466 | 746 | 0 | 35 | 1269 |
| Tier | Count | Percent of authored owners |
|---|---|---|
| X | 147 | 12.2% |
| C | 221 | 18.4% |
| B | 819 | 68.2% |
| A | 1 | 0.1% |
| S | 13 | 1.1% |
Counts durable per-primary-entry tiers for authored primary functions. Owner tiers are derived separately and may be lower because of sibling entries or owner gates.
| Tier | recoil | messages | Total | Percent of authored entries |
|---|---|---|---|---|
| X | 484 | 0 | 484 | 13.7% |
| C | 74 | 0 | 74 | 2.1% |
| B | 2948 | 0 | 2948 | 83.2% |
| A | 0 | 0 | 0 | 0.0% |
| S | 36 | 1 | 37 | 1.0% |
Counts durable per-primary-entry tiers for authored primary data entries. Owner tiers are derived separately and may be lower because of sibling entries or owner gates.
| Tier | recoil | messages | Total | Percent of authored entries |
|---|---|---|---|---|
| X | 392 | 0 | 392 | 12.0% |
| C | 1596 | 0 | 1596 | 48.9% |
| B | 1271 | 0 | 1271 | 38.9% |
| A | 4 | 0 | 4 | 0.1% |
| S | 0 | 1 | 1 | 0.0% |
| Kind | Count | Percent of owners |
|---|---|---|
| callback-table | 1 | 0.1% |
| class | 164 | 12.9% |
| data-owner | 431 | 34.0% |
| provider-boundary | 68 | 5.4% |
| record | 42 | 3.3% |
| source-file | 166 | 13.1% |
| standalone | 58 | 4.6% |
| subsystem | 339 | 26.7% |
Reconstruction is ongoing. The marker-managed block above is synchronized from
.agent/RECONSTRUCTION_PROGRESS.json; that unified tracker remains the sole
progress authority. The snapshot intentionally excludes leases, work packets,
evidence ids, commands, timestamps, and tracker revisions so it stays a concise
public view rather than a second operational ledger.
The reconstructed source, tests, and documentation in this repository are
released under the MIT License; see LICENSE.
That license does not grant rights to the original Recoil game, retail executable, game data, extracted resources, third-party SDKs, redistributable DLLs, decompiler databases, or compiler/toolchain payloads.