# Optional pass pickup delay — 2026-10-31-r11

Released ROM SHA256: 3d1f54ae96b0308163474b8c138be9ed880fa96d2213e871a8e77e71bdbcccc5; CRC32: E07B3785.

## Behavior and limitations

**Pickup Delay: Off/On** is the twentieth start-menu row, default **Off**.
This implements a bounded experiment from Brodeur30's passing proposals
[#217609](https://forum.nhl94.com/index.php?/topic/40511-2-guys-one-ai/#comment-217609)
and [#217634](https://forum.nhl94.com/index.php?/topic/40511-2-guys-one-ai/#comment-217634).

On sets active skaters' native contact cooldown to at least six native updates
at an ordinary human B release, on both teams. It preserves existing longer
and signed special locks. Goalkeepers and inactive players are excluded.
The native passer receives its normal longer cooldown afterward. Native
countdown arithmetic uses its own update delta; six updates do not promise an
exact number of video frames or a fixed real-world travel distance.

The native cooldown gate skips the entire skater/puck collision. Consequently
**body deflections are also suppressed during this brief interval**, as well as
stick pickups. This is deliberately documented as an optional experiment, not
an invisible correction to every pass. Goalkeeper saves, boards, nets, shot
and puck physics are unchanged. There is no accuracy or pass-completion claim.
A flips and C shots do not activate this helper; an already active cooldown
continues according to native timers. No blanket immunity field is added.

Ordinary human B uses the helper only at actual emission, including Assisted,
Directional, charged release, both teams, P1–P4 and manually owned keepers.
Waiting while charging does not activate it. CPU passes and requested CPU keeper
outlets go through their existing direct entry. Whistles, shootouts, replay,
forced passes and other guarded special states bypass the helper.

Height, Speed, Mode, Cone, Charge and Penaltys remain independent. Native play,
Full, Light and Mini have separate records. The first completed match locks the
season setting across boots and slot circles. Confirmed restart resets only the
selected season's choice to Off; all other preference and goalie bytes remain.

## Native code and allocation

- Module **220000**, exports release/load/put/reset at four-byte intervals.
  Existing human `pass_mode.emit` calls it before its normal pass prefix.
  All registers, SR and stack are preserved by the release helper.
- RAM **F010**: enum 0/1. F00A is already simulation state and F00C/F00E are
  opponents-cache state; those occupied fields were explicitly rejected.
- Logical SRAM **4D2A–4D31**, two tagged/complemented bytes for native, Full,
  Light and Mini: 70/8F Off, 71/8E On. Physical native start **209A55**.
  This is inside Light's excluded shared-profile gap, after the existing charge
  records. Light's checksum and the common active checksum are maintained.
- Menu row **38** (twentieth entry), label **2E1330**, values **2E14F2–2E151E**.
  Slot load occurs after destination MODE/VIEW commit; restart selects its own
  season record even when entered from native play.
- Native skater **+5E** is the contact cooldown. **ABAA** decrements it and
  clamps underflow to zero; **14E54** rejects contact while it is nonzero.
  Both instruction ranges remain byte-exact. The separate puck +5E field only
  shrinks native pickup radius and is not the same mechanism.
- Shared CPU pass **BC64–BDD8**, receiver/flight solver **BE26–BFB6**, player
  collision **14E10–15466**, keeper code and native rendering stay byte-exact
  to r10. There is no new per-frame or collision hook, RNG or rating write.
- `--legacy-pickup-delay --version 2026-10-31-r10` rebuilds exact r10. Independent
  full source/generated trees are used for parallel builds. Original-base IPS
  reconstruction is independently applied and compared byte-for-byte.

## Qualification

All 93 required suites execute on the exact source manifest and ROM: 92 pass.
The inherited **finisher_hold** geometry limitation has the same numeric result
as r10 and remains failed. **Strict release gate: FAILED.** It is retained in
the user-accepted 38-win tactical base; no new regression is waived.

The new suite covers 224 release/guard/full-ABI contexts; 80 actual native
countdown/stick/body/keeper collision contexts; 1040 record-validation cases and
four complete 64KB write-separation comparisons; 30 native menu/render/boot/
slot/restart/first-match-lock cases; six cold-boot 25000-frame actual-input games
covering every physical pad, all eight directional aims, short/full charge and
immediate keeper requests; and 512 paired complete human/CPU passes checking
physics, receiver, control, RNG, SR, registers and stack against exact r10.
Explicit reset fixtures supply inputs and geometry, never game outcomes.
Automated native-input tests are not a physical-controller human playtest.

The prototype's first low-RAM private observation buffer collided with native
working data and produced corrupted packet tails. That failure is retained.
The final test observer uses the established high menu-scratch test area, seven
checked packets, sequence/complement and checksum validation, and publication
after all fields are complete. All six original input cases pass again. This
repair changes private observation code, not production puck/pass arithmetic.

Existing lifecycle fixtures were updated before the complete matrix: a free-byte
witness moves beyond the newly allocated record; selected restart permits only
its own two preference bytes and the Light checksum; menu navigation locates the
original target row with separate Down/Up edges. All original criteria remain.

The first complete matrix retained all 93 original outcomes. Two additional
failures came from test assumptions: native graphics work overwrote the Easy
observer's low-RAM buffer, while the true human roster energy stayed at 4096;
and an eleven-round shootout correctly added a team-only decider that the old
full-game observer incorrectly expected in player goals. The completed-update
Easy snapshot now checks every active player's skills/timers and both complete
roster energies, with busy/sequence/complement/checksum protection. The scorer
observer requires a genuinely observed, completed shootout and exactly one
winning team increment before excluding that decider. Ordinary player/keeper
and league accounting remains strict; five malformed host-only copies fail.

Four complete affected suites were requalified on the unchanged ROM: Easy,
full 90000-frame CPU game, native keeper-goal accounting and partial-write
readiness. The other 89 checks retain exact sources and unchanged dependencies.
Original failures, all three changed observation files and requalification
hashes are preserved in QA_STATUS.json and PICKUP_DELAY_RESULT.json. No
production skill, energy, scoring or shootout change was made for these tests.

All 40 current ordinary 600-frame scenes are freshly compared with exact r10;
40 are raw-exact. Every difference and all earlier parent comparisons remain
recorded separately. Added dispatch instructions can affect native HV timing.
No universal unchanged-gameplay or new Hard-strength claim is made.

See PICKUP_DELAY_RESULT.json, QA_STATUS.json, the guarded builder, public hook/
hex exports and complete source ZIP for exact source and delivery status.
