# Experimental NHL94 profile

Start with [the complete build and continuation guide](../notes/EXPERIMENTAL_BUILD.md).
This folder publishes all source for the earlier private gameplay experiments;
`../season/` contains Mini, opponent selection, statistics, standings and playoffs.

`build_test.py plain-patched.bin /private/output-test.bin` builds the complete
experimental 2026-10-24 version, including New Full Season (84 games), legacy-82 continuation, diving-goalie
recovery and press-edge B player switching. It takes a plain patched ROM without season mode and
writes only the explicit output, never installing it or publishing downloads.
Docker/SGDK is required. The guide records tested input/output hashes, ROM/RAM
allocations, save compatibility, every behavioral change and test evidence.

`test_core.py` is a headless Genesis Plus GX harness with two-pad input, isolated
battery saves and frame commands. Example (fresh private save):

    GPGX_DEV=513 GPGX_SRM=/private/test.srm python3 tools/experimental/test_core.py \
      /private/output-test.bin tools/experimental/testcases/mini-opponents.txt /private/screens

The stale-exit case deliberately sets the obsolete return marker/address to bad
values to verify that the new build ignores them. It is a regression fixture,
not an attempt to reproduce Bodin's exact single-player incident. That incident
remains unconfirmed; see the guide for the separate findings and stress tests.

`switch.s` documents the input registers, eligibility checks, candidate selection,
held-button consumption and original fallbacks. `GPGX_CORE` overrides the test
harness core path; tests never need a visible emulator.

`glass.s` adds a 50% roll for qualifying far-end glass impacts and positions
the native break effect at the hit pane. The guide documents exact height,
speed and position limits, exclusions, ROM hooks/RAM and seeded trials.

`outlet.s` adds active AI-goalie passing to P1/P2, close-pressure holding and
guarded exact-target/vector hooks around native passing. The guide records
all bounds, ROM/RAM allocations and old/new tests, including manual/Y fallbacks.
