# Optional painted-dot faceoffs — 2026-11-01-r4

ROM SHA256:c32a79e34127757b52cd488c124c9247bf7b875088bac89956a6b7ca2b132cf6; CRC32:AD52D7BA.

## Behavior and original report

**Faceoff Dots: Off/On**, default **Off**, is start-menu row24(logical46).
On maps the native final stoppage point to a painted faceoff point. Off keeps
the original coordinate policy. Each native/Full/Light/Mini context saves its own
choice. The season locks after its first completed game, including across slot
changes and cold boots. A confirmed restart resets only that season's record.
Missing/corrupt records default Off without unlocking a played season.

jdc reported SJS2–EDM1, period1 at1:17, SJS PP1:00, PP2/PK2, with the complete
formation displaced approximately14 native pixels left and12 down. The original
preceding state is unavailable. The retained input movie was recorded later and
its original initial SRAM/core identity is not authenticated.

Native124B0..125E8 is byte-identical in the original v5.1W base, Oct30r3 and
Nov1r3. Event14 selects centre(0,0). Other stoppages use actual puck or saved
coordinates.12504 clamps X to±70 and snaps Y outside±166 to±206, but leaves
neutral coordinates free.12550/12554 store BF94/BF96.1257E applies native queued
foul corrections; some attacking-zone cases become±70/±65, while central free
points remain. F9F6..FAD4 builds the actual formation relative to that point.
Centres stand at point+(0,±15). This inherited policy explains a coherent whole
formation off the painted centre circle without a renderer/camera mismatch.

A declared physical pre-foul actor/puck scene, followed by the actual native
minor11F2C, produces point(-14,-12), PP2/PK2 and centres(-14,-27)/(-14,3). Saving
immediately after the real queued minor, before point selection, then restoring
on **exact unmodified Oct30r3 and Nov1r3** reproduces the displacement with no
hook or RAM writes after restore. This matches the visible phenotype, not the
original score/time/history. Candidate Off keeps it; On yields point(0,0) and
centres(0,-15)/(0,15). Native camera and preview placement may consequently
follow their normal alternate paths.

[Off native image](https://dela.jdc.se/nhl94/img/faceoff-dots-off.png) ·
[On native image](https://dela.jdc.se/nhl94/img/faceoff-dots-on.png).
Both are declared automated fixture images, score0–0 at4:50, not jdc's incident.

Earlier observers required BF94/BF96 exactly(0,0), excluding a displaced point.
Negative centre-render checks did not exclude this cause. The retained movie
replay is deterministic across20,679 frames with7 faceoff episodes,1,643 readable and
1,641 valid metadata comparisons. A separate qualified RGB565/planeB/SAT observer
checks275 of 294frames for each old/current control and403 of 425 movie frames;
no qualified actor-to-paint offsets are nonzero. Ambiguous fade colours are
rejected;20 actual palettes×5image controls pass100 assertions. Original failed
observer/fade attempts remain retained. These bounded negative renderer checks
are supplementary; the genuine native free-point reproducer is the cause test.

## Geometry, scope and native contract

After native1257E corrections, valid native X±70/Y±206 is mapped by squared
Euclidean distance. For |Y|>=166 choose the two painted end dots(±70,signY206).
Otherwise choose among centre(0,0) and four neutral dots(±70,±65). Invalid input
is left unchanged. Equal distances keep centre first, then+Y/right/left,
then-Y/right/left. All 9 canonical points stay unchanged. There is no RNG draw.
This preserves the native regional choice; it does not implement every real
faceoff-location rule or assert the historical free-point choice was unintended.

The option excludes active F090 overtime-shootout state and native C2FA bit0
standalone shootout/bit2 special attempts. D412 is **not** an exclusive penalty
flag: native F8D4 sets it to60 at ordinary faceoff setup, and ACEA..AD00 decrements
it and resets input masks. A private guarded prototype wrongly excluded D412
and failed a genuine ordinary minor test; that candidate/failure is preserved.
The final implementation deliberately allows that ordinary countdown.

Only BF94/BF96 may change during the runtime hook. Native formation, actor and
puck placement, ownership, line selection, movement, ratings, RNG, physics,
scoring and goalkeeper behavior retain their own routines. There is no new
normal-frame hook. Extra instructions can alter native HV timing, so ordinary
trajectories are measured instead of claiming universal identical gameplay.

## Hooks, storage and build

- 1255A eight bytes:610000224278C3E6 becomes4EB9002240004E71.
 The helper calls original1257E first, optionally normalizes its final point,
 then replays CLR.WC3E6. All native GPR/SP/X/IRQ and final CLR NZVC survive.
- Module224000..225000 occupies verified parent FF padding. Fixed four-byte
 exports:commit+0,geometry+4,load+8,put+C,reset+10. Geometry preserves input upper
 words, other GPR, full SR/SP and all RAM/RNG; only low D0/D1 may change.
- Option F848..F849 follows AI plan transient F840..F847. Parent literal F848
 hits are all unaligned data; linear code hits are a DBRA branch target, not
 a RAM operand. Source and indirect clear spans were audited; actual On/invalid
 canary lifetimes cover pause, stats and native shootout starts. Computed aliases
 cannot be ruled out universally by a text search alone.
- Logical SRAM4D4A..4D51, physical209A95odd lanes. Per-context Off78/87,
 On79/86 tag/complement pairs. This lies inside Light's excluded shared-profile
 gap4D20..4E1F, following AI plan4D42..4D49. Writes update Light's checksum.
- pass_mode loads/puts the record; slots loads only after destination identity
 and resets only a confirmed selected season. Other preferences remain separate.
- Menu label2E1370, values2E15A2..2E15CE; native column17 and actual Off/On strings
 are observed during rendering. Row46 uses the established settings lock.
- `--legacy-faceoff-dots --version2026-11-01-r3` rebuilds the exact parent.

## Qualification and retained limits

All 97 shared suites execute;96pass. **Strict gate FAILED** retains finisher_hold.
Its current matched-control values are in FACEOFF_DOTS_RESULT.json and are not
called fixed or numerically identical to the parent. All 40 ordinary scenes are
compared with fresh exactr3 controls: 38 raw-exact, every difference retained.
The two differing scenes each differ in one sampled frame only: case9/frame360
has actor5Y two units higher, and case38/frame415 has actor7Y one unit higher.
All other sampled fields/frames in those two600-frame traces match. This is
bounded evidence, not a claim that all possible games are identical.
The entire r2-and-earlier comparison chain remains independently qualified.
Independent same-source rebuild, exactr3 rollback, five matched AI ablations,
matched native-net thresholds and original-base IPS reconstruction pass.
No new Hard win-rate search or human difficulty claim is made.

All seven new sections run on this exact image:

- 58,273 native coordinate pairs:58,233 entire valid grid+40 invalid boundaries.
 256 full CCR/IRQ/GPR/SP geometry contexts and16 whole active-RAM/RNG batches.
- 778 actual native boundary Off/On/invalid/countdown/special-mode contexts,
 49 whole active-RAM comparisons allowing only final point. Native12596 may
 itself changeX; the oracle compares the actual native parent output.
- 1,040 tag/complement/full ABI loads and12complete separated64KBSRAM writes.
- 30 real menu/render/coldboot/slot/corruption/restart/first-game lock cases,
 normal513 and4WayPlay1281, with other options and Full goalie sentinels exact.
- 256 unarmed foul-observer forwarded-callee full ABI/RAM contexts. The callee
 output stub intentionally changes registers/flags; live flow separately runs
 actual Crowd and native11F2C. No universal identical observer-timing claim.
- 8 fresh saved-choice native minor/formation flows:both clubs×both choices×both
 controller devices, actual queued minor and PP2/PK2. Only pre-foul physical
 carrier/puck, controller assignment and second-unit energy are declared.
 No point/formation/line/score/clock/RNG outcome is written.
- 14 real On/invalid-canary option lifetimes across pause/resume, actual ordinary
 Standings/Leaders and automatically started native OT shootouts on both sides.

Every original failure is retained, including the incorrect nativeX test oracle,
menu-column observer assumption, initial coincident-penalty fixture, and the
D412 production-guard failure. Corrections are explained privately and relevant
public test qualifications are recorded in exact QA evidence. The complete
shared matrix is losslessly archived with every member compared to original
scratch evidence. Physical-controller confirmation and retained-variant human
preferences still require actual play. Bodin delivery is pending while offline.
