OPENHOOPS / 2K14Final team archive · November 9, 2026Reference libraryChecksums

Dated source reference. Current release status: handoff state. Full original relative paths are in the developer archive.

Current crowd-enabled source: API0.2.0.dev58, main ABI26/event ABI4, separate Crowd.1 and CrowdAppearance.1. Dynamic attendance and visiting artwork expose independent 0–100 percent controls. Work78 records exact private builds and native acceptance. Visiting artwork requires both OPENHOOPS_API and OPENHOOPS_PLATFORM; current complete builds also retain the engine/college/roster/rule flags. Legacy builds compile and export appearance version0. Historical ABI25/earlier checks below keep their original scope.

API adapter build — development50

Current scope (October13,2026): Windows-first deep editing and a public extension API; Mac/Linux compatibility follows later. Earlier native-port goals and next-step proposals in this evidence history are superseded. Technical observations and verification limits remain as recorded.

Current source contract: snapshot ABI25, event ABI4, college profile4, court definition3 and broker 0.2.0.dev50. Current expansion candidates remain isolated; public preview2 retains36/ABI14 and stable35 is preserved. API verification distinguishes source/binary identity, reference scenarios and deferred checks. Build and test on the Dell; the Mac is for editing/storage/control. Documentation changes do not rebuild or install a game DLL.

The game DLL is x86; the packaged Python broker and its atomic helper are x64. They share a pointer-free, packed ABI. Do not build both binaries for the same architecture by accident. Runtime dependencies are the original supported game, Windows, and Python 3.9+; the release embeds the MSVC runtime with /MT.

Using Visual Studio Build Tools with the C++ workload and Windows SDK:

  1. Open an x86 Native Tools command prompt in native/external-mode:

bat mkdir build cl /nologo /std:c++17 /W4 /WX /EHsc /O2 /MT /DOPENHOOPS_API /DOPENHOOPS_ENGINE_EVENTS /DOPENHOOPS_COLLEGE_RESEARCH /DOPENHOOPS_ROSTER_RESEARCH /LD dinput8.cpp /Fobuild\dinput8.obj /link /DEF:dinput8.def /OUT:build\dinput8.dll /IMPLIB:build\dinput8.lib /MAP:build\dinput8.map cl /nologo /std:c++17 /W4 /WX /EHsc /O2 /MT ..\api\layout.cpp /Fobuild\layout.obj /Febuild\layout.exe build\layout.exe

  1. Open an x64 Native Tools command prompt in native/api:

bat cl /nologo /std:c++17 /W4 /WX /O2 /MT /LD atomic.cpp /Foatomic.obj /link /OUT:..\..\api\openhoops_api\_atomic.dll /IMPLIB:atomic.lib

  1. Keep matching game DLL, seed assets and broker source in a separate working copy. A public package is not required. Generate new payload hashes before using the installer with a rebuilt DLL. Recompiling does not promise byte-identical PE files. Do not substitute a new binary into an existing signed-off evidence manifest.

The tested compiler is MSVC 19.51, on Windows 11 x64. Current snapshot ABI25 uses Shared68,680 bytes (ABI24 prefix68,496; ABI23 prefix68,480; ABI22 prefix67,828; ABI21 prefix67,752; ABI20 prefix67,716; ABI19 prefix67,684; ABI18 prefix67,648; ABI17 prefix67,624; ABI16 prefix67,608; ABI15 prefix65,416; ABI14 prefix47,920; ABI13 prefix45,176; ABI12 prefix45,148; ABI11 prefix45,124; ABI10 prefix9,952). Snapshot 7,760, Player 188, Team 84 and Stats 36 bytes. Snapshot starts at offset40 and the command mailbox at7800. See protocol.hpp and the Python counterpart.

bridge.inc is included by the existing external-mode adapter. It installs one exact-byte-guarded dispatcher detour, samples on that thread, and executes only guarded clock, slider, option, controller, camera, preparation, roster-load/Start and startup native settings/camera/control-commit operations. It does not expose raw addresses to HTTP clients. The six-byte preimage belongs to one executable hash. Unknown builds must fail closed. Mapping visibility is Windows-login-session-local.

The wrapper preserves integer registers, flags and FXSAVE/FXRSTOR state. Its compiled emulator tests cover four stack alignments, GPRs, flags, XMM0–7, MXCSR, x87 control word and stack restoration, with the sampler mocked. These tests do not prove arbitrary AVX state preservation or an authoritative simulation commit boundary. Live Windows tests supplement them. See the project API evidence report.

This repository's Python source distribution supports clients/replay without a native helper. The Windows broker uses the helper in the release source tree; no cross-platform binary wheel is supplied.

Ordered events use a separate private mapping. Event ABI4 retains the244-byte record and249,912-byte ring layout; the mapping name is Local\\OpenHoops.Events.4.<pid>. The broker also reads legacy event layouts. Bit32 declares rebound context/lookup provenance capture; it is not a guarantee of complete correction coverage. Snapshot extensions are append-only; consult protocol.hpp for exact offsets.

rebound_hooks.inc observes the original78C4F0 correction scope and its4C77F0 history-lookup result. Each remembered node is checked against its captured timestamp/payload, and reused slots are invalidated on publication. The wrapper saves nested scope on its own stack and restores GPR/flags/FXSAVE state. Confirmed negative deltas alone receive a public context reference. Exceptions unwinding through the original routine have not been exercised; do not claim arbitrary exception/AVX preservation. See analysis/api-engine/native-rebound-tests-18.json for122 synthetic cases and the remaining live-test limit.

College research is opt-in at compile time (OPENHOOPS_COLLEGE_RESEARCH) and in the exe-local research INI. ABI12 appends the rule profile; ABI13 appends28bytes of explicit media-scheduler state. These declarations expose verification limits and do not make this a complete college rules release. Stable35 remains the separately preserved reference package.

ABI14 appends read-only court observations: four original transformed contact samples, boundary projection, observed boundary dimensions and a legacy basket reference. It does not infer legal shot/OOB decisions or measure physical hoop geometry. Current college profile revision4 and court-definition revision3 share the measured NCAA2026–27 definition. See court evidence.

ABI15 appends44 bytes of preparation extension and a17,452-byte read-only paged-catalog mailbox. Thirteen runtime controls include Game Style, both teams/uniforms and the original eight. Catalog rows are scoped to a loaded native bank/run, not external identities. Catalog reads and guarded setters execute on the game thread. Preparation evidence records307 API/30 compiled cases and stock/905-roster live startup. Old ABI offsets remain unchanged.

College runtime and evidence

Enable [CollegeResearch] Enabled=1, HalfMinutes=1..20, MediaTimeouts=0/3/4 in exe-local openhoops/college-research.ini with the game closed, then restart. The college half duration is independent of the generic preparation quarter-length field. Without OPENHOOPS_COLLEGE_RESEARCH the compile command omits college hooks; without runtime enablement the declaration remains original-game behavior.

Production36ck excludes OPENHOOPS_COLLEGE_TEST_PROBES and OPENHOOPS_COURT_RENDER_PROBE; never ship a synthetic action/input/media-entry probe as a public API. Frozen36ck SHA61683231d2b425f2531e6cc8d21c29ad2a0a2799e84c28bd453b74f649cf175b passed the original/compiled suites. Same-rule-source observer36cs supplied latest natural36ct OT/export evidence with zero private actions during the managed match. The requested additional uninstrumented full-game smoke is deferred; no new build is implied by this documentation update.

Profile4 metadata reports verified reference export scenarios, while full-rulebook certification remains false. The earlier36 metadata refresh left ABI/gameplay unchanged; current37 appends preparation ABI15 while retaining college rule source. The native startup log's historical ABI12 phrase is not the layout authority; use protocol.hpp, broker layout checks and session/snapshot declarations. Current exact source tests and schema checks are linked in the API verification ledger.

External game flow50

ABI25 appends128-byte substitution observations and a56-byte command mailbox. Availability2/PE substitution version2 exclude the queue-only prototype. Queue/cancel use original guarded functions; a narrow exact-owned-pending gate preserves requests against native automatic lineup replacement, while original stoppage/entrance processing remains unchanged. The wrapper preserves flags/GPR/x87-control/SSE/stack and replays the complete native prologue on passthrough. Startup defense uses existing bounded side/opponent native setters/readback before reveal, raising the optional batch maximum to426.493 exact-source Windows API tests,111 new native cases,1,104 prior cases and27 pause cases pass; live51w verifies both entries. Full flow and preservation pass; see the external-flow ledger. No public package is promoted.