Files
Joe MattielloandClaude Opus 5.5 227b0d62ad fix(tom): show the whole unblanked line, border after HDE (#1191) (#1192)
* fix(tom): show the whole unblanked line, border after HDE (#1191)

The visible window was a fixed 326 px from HC 188 (NTSC) / 204 (PAL),
inherited from upstream Virtual Jaguar.  Atari's stock video init puts
HDB1 at 123 / 157, so every title using it lost ~16 / ~11 pixels on the
left -- yarc's HUD read "101" for "0401".

The window is now the hardware's unblanked span, HBE..HBB as the boot ROM
programs it: HC 125..1534 NTSC (1409 clocks = Atari's ntsc_width, 352 px
at PWIDTH 4) and 158..1538 PAL (345 px).  The frame is that whole window
for every title, so the picture sits where a TV puts it and the 4:3
aspect the core reports is exact (it was an ~8% horizontal stretch).
Both edges stay fixed: a title that moves HDB1 still moves its picture,
and titles that leave HDB1 near the BIOS value (~203) now show a ~20 px
border on each side, as on a TV.

HDE is decoded through bit 10 (second half-line) -- it was compared raw
($6BF = 1727) and never applied -- and the columns past it are filled
with the border colour, as TOM does.  Titles whose HDE ends inside the
window ($66B-$688: Bubsy, Pitfall, Zool 2, Sensible Soccer, Pinball
Fantasies, Kasumi Ninja, Rayman PAL, AvP) now show border in the 1-4
line-buffer columns past it that the old window displayed; in every case
inspected those columns were background, and the cut is what hardware
shows.  It also keeps AvP's parked off-screen object (#266) out of view.
max_width rises from 652 to 704 (PWIDTH 2).

Corpus sweep (385 carts x NTSC/PAL, stock vs patched, one frame at 1200,
carts only -- mostly title/attract screens, not gameplay): 233 title/mode
pairs gain picture on the left, 301 on the right, 36 trade 1-4 columns
past HDE for border; main RAM is byte-identical between builds.
Private-ROM `make test` passes (Balloons lightgun exact at 21 points);
2x box check passes on the HDE-fill titles; app ctest 228/228.

Frame hashes move with the frame: yarc f4c30ea3 -> e33e2c61, cart BIOS
boot 3cc9c43e -> 261701ba, CD BIOS boot b83cb3ee -> f7dc52ce (app smoke
tests, MSIX/installer qualification, package workflows).  Width-keyed
tests follow the window (visible-window decode cases, fountain max width,
lightgun origin, framebuffer margins, app OP screen mapping).

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* test(regression): re-capture baselines for the full visible window (#1191)

The wider frame (TOM's HBE..HBB window) changes the regression screenshots
from 326 to 352 px (yarc) and from 434 to 469 px (jagniccc). The old
baselines match the new captures pixel for pixel at x+16 and x+21. The new
captures were byte-identical on macOS ARM64, Linux ARM64 and Linux x64.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* test(app): update the content server launch hash for the wider frame (#1191)

#1188 added this test with the old YARC frame hash. The test boots the same
ROM as smoke_yarc, so it needs the same e33e2c61 pin.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-11-08 02:37:29 -05:00
..
2026-04-30 23:36:48 -04:00