# Main-menu lower selection corner — private preview,2026-11-04

Implemented and delivered as a separately named local test ROM at jdc's explicit
request to avoid the full release suite for this cosmetic change.
Current public qualified ROM/source remains2026-11-03-r2,20793fce15e640bf60d31c48e95bd0d284105fc07f8ae01ed08b1a579b37e99f.
The preview is **not a new fully qualified public release**. No running frontend,
existing save, remap, configuration, playlist or public ROM is replaced/reset.

Preview: `NHL 2026 - 94 Edition v5.1W - Season - jdc - 2026-11-04 10.57 (Beta menytest).bin`.
SHA256 `d717638eaa5f00790ff042b578064b6ad17f52b76822c6a688cb1c4c16d8fe91`. Private source/test/evidence are in
`.workspace/work/menu-border-20261104/`. Actual source change below is retained
for integration at the next qualified release; do not lose it on restart.

## Cause and fix

The framed-help renderer repaints the settings panel's bottom on plane A row24.
When the selected value is the fifth visible row, that overwrites the native
selection's bottom-left corner at column16. The new main-menu-only code derives
visible row from D7/2 minus native scroll D422 and restores native priority tile
8034 only for visible row4. Other selections retain a straight outer bottom.
No new artwork; source tile/palette/priority are the original native selection.
The wrapper already preserves registers/SR/VDP text destination. No gameplay,
roster, budget, settings/storage logic, music/CRC/Y modules or other data changed.
The ROM differs only in menu_ui25B000..25BFFF, dated title and Genesis checksum;
restoring those regions recreates the released20793fce… image byte for byte.

## Targeted checks actually completed

260 paired actual native screenshots:52 before/after comparisons in each Full,
Mini, New Playoffs, Quickgame and Allstar, using real Down/Up controller input
through the full list and back.111 compared frames repair the corner; every
pixel outside its8x8 cell is identical in every pair. Original non-bottom
selection supplies independent native tile/pattern/opaque-pixel expectations;
all repaired corner opaque pixels match. One transparent corner pixel takes its
underlying background from its own screen location, rather than the reference
row's different underlying background. There is no arbitrary image tolerance.
The exact tile is also checked in saved native VRAM. All26 Full rows and eight
representative/down/up/return captures for each other mode were opened in13
unscaled contact sheets (58 actual screenshots), plus enlarged real before/after.
Full mandatory128-group release suite **not run**, as explicitly requested.
This preview does not claim that gate. Physical live play remains a user test.

Initial private draft used the outer-frame corner05BA and was rejected in favour
of the actual native selection8034. A first whole-cell RGB assertion was invalid
for one transparent pixel over a different underlay; the final test explicitly
checks native pattern opacity and exact outside-cell identity. Drafts and errors
remain in the private work folder; no original failed result is called a pass.

## Exact source patch for the next release

```diff
--- tools/experimental/menu_ui.s (qualified release)
+++ tools/experimental/menu_ui.s (private preview)
@@ -534,6 +534,18 @@
  move.w (%a0)+,0xC00000
  addi.l #0x00800000,%d2
  dbra %d1,main_frame_row
+ | The fifth visible value's native selection also ends on row24. Our
+ | outer-panel bottom has just covered its lower-left corner at column16.
+ | Restore only that original corner; other selections keep a straight
+ | outer bottom, so scrolling upward never leaves a stale selection notch.
+ move.w %d7,%d0
+ lsr.w #1,%d0
+ sub.w 0xFFFFD422,%d0
+ cmpi.w #4,%d0
+ bne.s main_frame_done_corner
+ move.l #0x6C200003,0xC00004
+ move.w #0x8034,0xC00000
+main_frame_done_corner:
  rts
 main_frame_tiles:
  .word 0x05BA,0x05BB,0x05BC         | original settings bottom
```

## Separate pre-existing observation

During the Allstar portrait carousel, capture0005 momentarily shows a tile-like
card graphic. The same frame is pixel-identical on released20793fce… and this
preview outside the repaired corner. Transient versus stable defect is unconfirmed;
recorded for a later targeted portrait redraw/transition regression, not silently
repaired or presented as a newly introduced fault here.
