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.

Elan 2K Mod — source and runtime rules reference

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.

Upstream repository · Local checkout · Release v1.9 ZIP

Archived October 12, 2026 at commit f77f0faeee55a1c077f52c79d2b4e8e5db0d47f6. The archive includes 30 commits, nine tags, 33 tracked files, release metadata and the only uploaded release asset exposed by GitHub (v1.9). Earlier releases have tags but no uploaded assets. A verified Git bundle preserves the complete fetched history offline.

Why this matters

This is a concrete source-level lead for custom gameplay rules. Its Python program attaches to nba2k14.exe, obtains the module base, then reads and writes live memory using Pymem. A PyQt5 window supplies settings, and a worker thread repeatedly applies changes. The checkout also includes two Cheat Engine tables with 59 entries, build artifacts, a Windows executable, configurations and four-point-line artwork research.

It provides implementations to study for clocks, scoring and periods. It does not supply the game's engine source, a replacement renderer, or a native Mac/Linux runtime. Its custom window is the mod controller, not an in-game menu replacement. Compatibility with our supplied executable has not been tested.

What the source actually does

Feature Mechanism in main.py Boundary to verify
Custom shot clock Detects a clock value of 24 and writes the configured value Timing near period end; exact-value polling
Offensive-rebound reset Detects a change in either team's offensive-rebound counter Counter resets and game transitions can look like rebounds
Ten-second backcourt Replaces a remaining-time value of 8 with 10 Engine enforcement, possession changes and timing
Two halves Changes period 2 into period 4 Halftime, fouls, statistics, presentation and overtime remain unverified
Shorter three-point threshold Uses shot distance to temporarily change a two-pointer's scoring value Does not change line geometry; README reports two free throws after qualifying fouls
Four/five pointers Changes three-point scoring value using distance and a half-court flag Mode combinations, value restoration and foul awards
Target score Tracks scores when period 5 begins, then ends time when the configured increment is reached Overtime-specific implementation; README reports a free-throw ending issue
G-League free throws Consolidates attempts and changes free-throw value outside the late fourth-quarter window Two-second sleep pauses other worker logic; halves interaction needs testing
Period-length override Resolves one pointer and writes the configured integer once Pointer validity and initialization timing
Internal year Writes the year from the Apply handler Downstream age/calendar behavior

Source anchors: constants and pointers, scoring handlers, target-score logic, attachment and update loop, UI Apply handler.

Memory reference map

memory-map.json contains 21 source-derived address/pointer constants with line numbers. cheat-table-index.json preserves all 59 table entries, descriptions, types and pointer offsets. Unnamed research entries remain unnamed.

The code adds these offsets to the loaded module base; they are not standalone absolute addresses. Selected observations:

Field Module-relative offset Access in main program
Period 0x19EE5EC short
Time remaining 0x19EE638 float
Shot clock 0x19EE654 float
Backcourt time 0x19EE670 float
Home / away score 0x19E2188 / 0x19E260C short
Shot distance 0x1A16290 float
Three / two / free-throw value 0x19EE944 / 0x19EE948 / 0x19EE94C short
Period-length pointer 0x011472E4, then +0x50 pointer read as int; final write as int

Type labels are not uniformly consistent: the introductory comment calls the shot clock an integer, but the code and Cheat Engine table use float. The period-length table entry uses Byte while the Python writer uses int. Resolve differences on a matched executable before attempting writes.

Implementation limitations worth preserving

These are static code observations, not runtime test results:

  • Attachment checks the process name but does not fingerprint the executable or verify expected data signatures before memory writes. Our original executable must be matched independently.
  • The normal update loop has no sleep; exception handling refers to exit without calling it. Errors may be hidden while the loop continues. A future implementation needs explicit lifecycle and error handling.
  • The free-throw handler sleeps for two seconds inside the same worker that handles clocks and scoring.
  • The README lists overly frequent offensive-rebound resets, period-length startup timing, and inconsistent automatic shot makes. Keep these reported failures in the experiment plan.
  • The source has no pinned dependency manifest. Imports establish Pymem and PyQt5 as dependencies, but their supported versions are not established here.

The tracked source tree has no LICENSE/COPYING file, and GitHub's license field is null. Preserve attribution and provenance; do not label it an explicitly licensed reusable dependency. This archive is a research reference, with no code incorporated into our implementation.

Next experiments this enables

  1. Establish a working game baseline and identify the loaded executable before any memory access.
  2. Build a read-only observer for candidate clock, score, period and possession fields. Validate values across menus, game start, possessions, free throws, halftime, overtime and return to menu.
  3. Derive a typed, version-specific memory map with explicit validity checks and reproducible captures.
  4. Test one rule change at a time on working copies, checking enforcement, statistics, presentation and save behavior together.
  5. Use the verified observations to design a rule interface separate from platform-specific process access. This preserves useful rule knowledge while the Mac/Linux runtime work proceeds independently.

Archive verification

Git object integrity and bundle verification passed. The v1.9 ZIP passed its CRC check. SHA-256 hashes are recorded in source-manifest.json and release-downloads.json. The release executable matches the tracked executable byte for byte. Config-file hashes differ; both copies are preserved in their original containers. HEAD differs from the v1.9 tag only in README content.

No source code, executable, build script or Cheat Engine table was run. The original game remains unchanged. The README's linked NLSC discussion is preserved as a link; this addition does not claim to archive that separate thread.