# Replay HUD, CPU Quickgame and the separate menu background

## Replay HUD, Quickgame CPU option and menu texture — 2026-11-02

Automatic replay retains the measured shot's coloured bar, both speed units and
pre-replay lower-left clock/frame. REPLAY uses its own native VCR pattern bank,
so the speed text no longer corrupts the heading. Power-play captions retain
ownership of their clock interior, including during a temporary native redraw.

The mode is displayed as **Quickgame**. Its four human splits remain, alongside
**1 vs CPU** (P1 home; entirely CPU away), using ordinary pads or the adapter.
Allstar retains its four human-only splits and black A/red B uniforms. Games,
OT/shootouts and returning to an existing season retain native results/progress.

The supplied image 78 is used only for the menu background. The NHL94/Season
Edition startup picture and routine remain byte-identical, with matching real
startup screenshots. Native club/logo/font/panel palettes remain in use. P3 now uses bright neon
green; P1 blue, P2 red, P4 yellow and the red goal retain their entries. The
fixed green entry is shared with a few small crowd/background details, which
also brighten. Ordinary club and Allstar jersey palettes remain unchanged.

All **112 mandatory suites pass** on this exact ROM and **353 hashed sources**. The whole matrix ran freshly. Nine independent builds, exact R7 rollback, the pre-neon control, six matched controls and original-base IPS reconstruction pass. Original AutoReplayOn scenes: **38/40 raw-exact**; every partial native decoder sample is recorded and proven against the same packed record. Separate declared AutoReplayOff scenes: **40/40 raw-exact**. Ten active negative controls reject invalid changes. Physical USB/four-person play feel remains manual. No new Hard win-rate claim. Preseason transfers and the original season overall/hot-cold screen remain ordered next work.

ROM SHA256: <code style="overflow-wrap:anywhere">b29af4d9300da2f4d989e9537a0c94f2da43f701fdb6054f4c5b9ce5040fc3d8</code>; CRC32: `887FFBD3`.
See [REPLAY_QUICK_MENU_20261102.md](REPLAY_QUICK_MENU_20261102.md),
[exact QA](QA_STATUS.json), [opened native images](../../audits/replay-quickgame-menu-20261102/), and [extra final review](FINAL_AUDIT_20261102.md).

## Replay graphics ownership and actual native state

R7 used title patterns FC20..FF7F while its compact speed strings wrote
FE80..FF3F. That overlap produced the speed text across REPLAY in jdc's55.png.
The native VCR graphic declares 76 allocated tiles. The 14 hint tiles remain at
B026+0..13; the unchanged 27 chrome title tiles now use B026+14..40. They no
longer borrow the shot bar or compact speed pattern tiles. All 27 actual map
cells and the complete864-byte title pattern stream are checked through replay.

Before the blocking native automatic-replay call, replay.s allocates 94 stack
bytes: 90 for the actual45-word lower-left panel and 4 for temporary A0 storage.
F670..F673 is only the transient stack pointer, cleared after the call. Each
replay frame restores the original clock/frame map; actual game/penalty clocks
and results are never written. Both compact and power-play fallback keep the
original coloured bar and measured units. Full register/SR/SP and all 8 IRQ/32
CCR combinations are tested for capture and render; a dropped-SR mutant fails.

An additional real queued-minor/shot regression found native PP caption redraws
can momentarily blank that interior. The panel now uses actual unequal native
manpower (C6F2/CA56) to retain the above-clock fallback even in that blank phase.
This guard runs only when a shot panel is visible. Whole-plane ownership checks
retain native penalty text, timer and foreign windows; skip, normal exit,
expiry, pause and Stars cleanup stay covered. A boxed-shooter fixture and test
observer tag/parser mistakes were rejected and retained, not counted as passes.

## Quickgame and actual CPU ownership

Quickgame choice F84E values0..3 retain 1v1,1v2,1v3,2v2. Value 4 adds 1vsCPU:
native Players value 1, P1 home, all other physical pads inactive, entirely CPU
away. With an ordinary two-port setup the row cycles1v1/1vsCPU; with an adapter
all five choices cycle forward/backward. Inactive pads cannot steal a side.
Native opponent actors lack human flags and actually skate without opposing
input. P1 direction, immediate B switching and Y keeper selection are checked.
Allstar sanitizes a previous CPU choice and retains only its four human splits.

Actual native end/exit/return tests retain seeded/empty season records. Tied-OT
fixtures verify P1 input and real autonomous CPU attempt movement/shot response,
then declared puck/attempt-expiry geometry gives native goals/misses/results.
These controlled fixtures are not claims of naturally played matches or USB
hardware sessions. Original Simulate Match and season tables remain excluded
from Quickgame. The inherited QG-V01 compact Stars tied-score cosmetic remains
open; the full final result includes the actual shootout winner.

## Supplied menu78 source and unchanged startup

The supplied PNG is retained as data/menu-background-78.png. introimg.py performs
a deterministic320x224, eight-grey-level conversion to menu-background-78.bin.
This38118-byte image uses its own ROM bank240000..2494E5. menubg.s alone selects
that bank; startup data2A0000 and startup routine2FE280 remain exact R7 bytes.
All1120 source/map cells and every actual native background pixel are checked,
including offsets above32767: unsigned addressing avoids the inherited signed
word offset wrap in high tiles. The44 native palette1 strip cells are retained;
existing palette0 grey/checker conversion leaves club logos, fonts and panels
on their native palettes. Real cold boots give identical startup frames and the
new menu texture. Screenshots were opened and reviewed on the exact candidate.

## Rebuild, rollback and full qualification

Use the complete published builder and original plain v5.1W input. Four flags
with --version2026-11-01-r7 reconstruct the exact R7 parent:
--legacy-replay-hud --legacy-quickgame-cpu --legacy-menu-background --legacy-neon-marker.
Each independent rebuild/control has its own source tree. Original-base IPS
must reconstruct the entire final image. All 106 earlier suites and their
thresholds remain; add replay_hud,quickgame_cpu,quickgame_cpu_flow,
quickgame_cpu_shootout,menu_background,neon_marker. Maintenance compares all 40 original AutoReplayOn scenes with fresh R7 and
retains every raw difference and the entire older comparison chain. Live samples
remain exact. A difference inside the byte-exact native replay decoder must be a
partly committed position/puck component from the identical actual 64-byte
record; native PC/GPR commit phases and the independently decoded packed value
must prove this. No coordinate tolerance is used. A separate 40-pair profile
explicitly disables autoreplay only during the declared setup and requires every
field of all 600 native samples to be raw-exact. Ten active negative controls
reject live changes, score/clock changes, changed records, wrong decoder/value/
commit phases and arbitrary replay jumps. Native register-state offsets are
calibrated using all 16 known CPU registers and a known loop PC.

Source receipts now also bind both menu image assets.

The user explicitly superseded the old human-only Quickgame restriction when
requesting CPU play. That restriction remains for Allstar. Transfers model and
native validation prototypes are saved privately; a playable buy/sell menu,
roster/persistence integration and qualification remain. Restoring the original
season overview/hot-cold presentation follows transfers. No new Hard benchmark
or claim of completed transfer functionality is made by this update.

## Retained failures and corrected observation coverage

The preceding df56 candidate ran all 111 required suites and passed 106. It failed
maintenance replay, Strict SO menu lifecycle, Momentum coverage, Shot Plan menu
lifecycle and Allstar input observation. The complete report and failure logs
remain historical evidence; no successes from that image approve this ROM.
Its replay test stopped at the first mismatching scene and cancelled queued
scenes: it did not establish that all other 39 scenes were raw-exact.

The first full 112 run on b29 is retained separately. The final entire 112-suite matrix passes after the documented observer/fixture
corrections. In its long-pass input case, the original 15,501-frame Normal window
produced three human targeted passes but none with native flight time above six.
The unchanged controller input policy now continues through frame 50,001, keeping
both exact original event prefixes. The focused run observes Normal 19 human
passes (7 above six) and Low 30 (12 above six). Every original minimum, native
lift/fraction, solver, ABI, menu, save, lock and reboot criterion is retained.
No position, ownership, clock, RNG, pass target or result is injected by that
controller-driven input test.

A separate complete 160-run diagnostic compared all 40 scenes for both ROMs,
with their original autoreplay configuration and with a declared AutoReplayOff
setup. All 40 Off pairs are raw-exact. Original On pairs are raw-exact in 38
scenes; 11 samples in two scenes differ while both CPUs are inside the native
A69E..A798 packed-record decoder, with the same A4 record pointer and identical
source bytes. One CPU has committed a coordinate while the other has not yet
reached that write. Completed values match the actual native packed record.
This replaces an inappropriate one-coordinate tolerance with an explicit native
commit contract; it does not permit live movement or match-state changes.
The full fresh 112-suite matrix confirms this contract on the final exact ROM.

Strict SO, Shot Plan and Pickup Delay first-game fixtures assumed that the home team had not
already conceded. A diagnostic reproduced an actual 0–1 score before the scene;
a home goal therefore made 1–1 and did not complete the game. The declared final
scene now uses the actual leading side, parks all actors and waits for native
puck crossing, goal, game end, games played, checksum and saved option lock,
retaining the original deadline. These are controlled lifecycle fixtures, not
claims of naturally played goals.

The Allstar observer previously sampled a temporary native bank-restore state.
It now observes committed physical controls outside the actual bank transaction,
checks those real sides throughout each case and retains all original movement,
B/Y and inactive-pad deadlines. Momentum's Easy Off four-pad observation extends
12,000 to 18,000 actual input frames to meet the unchanged requirement of more
than 100 eligible live HUD samples.

Raw cold-boot marker pictures are not claimed to have identical partial native
sprite-work lists at every frontend stop. The neon suite verifies the one-word
ROM scope, all other 63 CRAM entries and actual visible green pixels on both
teams/ends; the separate 256 native DMA and 48 renderer cases verify resident
star artwork, shape, committed SAT and the physical pad palettes. Small crowd
pixels sharing the fixed green entry are disclosed rather than falsely labelled
P3-only changes.

## Extra visual audit and responsive reading

Actual screenshots cover startup, menus and alternate values, four Allstar human
splits, ordinary ANA/BOS uniforms, CPU Quickgame on both emulated devices, native
Momentum On/Off games, shot HUD, replay, periods and final scores. Declared
geometry and paired-state followups are labelled; logs alone do not approve a
visual scenario. The final gallery and report bind the exact ROM and image
hashes. Physical USB pads and simultaneous human play remain manual.

The browser review reproduced narrow-screen overflow from fixed-size native
images/audio and long documentation tokens. Private responsive fixes constrain
media to its panel, keep the image aspect ratio and wrap long technical text.
Desktop 1440px, mobile 390px and small 320px views are checked again on final
content. Gallery image dimensions are declared before lazy loading so screenshots
and reading positions stay stable. Earlier capture failures and transition-only
black frames are retained; correctly timed images are reviewed separately.

The first full 112 run finished 108 passes and four failed suites. In addition
to the three observation/fixture issues described above, the Shot Plan suite
hit the release runner's 1,200-second host wall budget after six completed
sections had passed (geometry, decision, target, commit, storage and menu).
The remaining flow/input/lifetime sections were not approved from partial
output. The runner gives this nine-section suite a separate 2,400-second host
budget; every child timeout, native-frame deadline and functional assertion
remains unchanged. The entire fresh112 matrix ran again and passed on353
hashed sources. The larger host budget let every required section finish.

## Native one-timer coverage and matched genuine starts

Completing the previously timed-out flow section exposed another observation
gap. The original 30,000-frame current cold boot had 516 routes, 19 shots,
91 observed passes and 40 native accepted catches, but zero one-timer releases.
A diagnostic through the first native completed game recorded zero of 22 current
shots and five of 19 R7 shots as one-timers. These are two bounded functional
trials; they do not qualify a new difficulty or win rate. Those raw results and
the failed focused flow remain retained.

Different cold-start trajectories do not isolate the one-timer mechanism when
menu/graphics timing and native HV-dependent choices can differ. A separate
positive control therefore captures a genuine R7 native start at frame 2,500,
before any goal, shot or accepted catch. Each On/Off profile has its own fresh
capture and exact paired SRAM. The actual paused CPU opcode must be compatible
with the current image, and state/SRAM/source/observer hashes are recorded.
Both products then restore the same complete captured native start through the
core's normal state API. Individual player, puck, RNG, shot or result fields are
not constructed for this protocol. State restoration is explicitly part of this
mechanics fixture; it is not claimed equivalent to uninterrupted cold-boot play.

The diagnostic On pair produced an identical genuine actor6-to10 catch at
frame8,833 followed by its one-timer at8,834: catch serial19, shot serial20,
sequence16, native passer/receiver identity, same puck/velocity and clock46.
The original requirement of a real pass/catch/one-timer chain within two frames
is retained in each matched On trial, including the R7 positive control.
Original current On/Off cold boots remain separate required observations with
all route/movement/leg/end/shot/pass/catch/clock checks; their one-timer counts
are disclosed rather than assumed from initial menu timing. Four active chain
negative controls reject a missing one-timer flag, wrong passer, invalid serial
ordering or a delay beyond two frames.

A first matched Off trial also exposed a host observation at native PC2D9276:
the observer packet said actor6 while the displaced native shooter MOVE had not
yet replaced actor11. An exact repeat confirmed the partial observer commit.
The host now reads these events outside the actual observer/C314 commit range,
with a maximum two-frame deferral. Native code, observer assembly, real actions
and all chain identity/time criteria stay unchanged. Complete boundary ABI
qualification still covers256 shot,512 target and512 accepted-catch contexts.
The corrected focused flow checks six cold/shared-start current/reference cases;
the complete fresh112 release matrix has now qualified every required section.
