https://gitlab.synchro.net/main/sbbs/-/commit/4ede5029451a751b9ed6746d
Modified Files:
src/doors/syncscumm/door/sst_io.c src/doors/syncscumm/test/test_sst_mouse.c
Log Message:
syncscumm: make the top canvas edge reachable with a cell-granular mouse
On a terminal that reports mouse position by text cell (not SGR-Pixels),
the cell mapper placed the pointer at the cell's CENTER, which sits ch/2
px below the top canvas edge, so game y=0 was unreachable. Beneath a
Steel Sky drops its inventory bar only when the pointer reaches y=0, so
the bar never appeared on a cell-granular sixel client. The mapper
already snapped the LAST row/col out to the far image edge; snap the
FIRST row/col to the near edge too, so the whole play area -- top edge
included -- is reachable. (syncconquer deliberately leaves the top short
for Red Alert's scroll-up zone; this door wants the opposite, so the
divergence is intentional.) No effect under SGR-Pixels, where the report already carries exact canvas pixels.
Also log each mouse report under SYNCSCUMM_TRACE (raw cell/pixel coords,
the mode read, the fitted image rect, and the game coords produced) so a
"can't reach the edge" or "stale cursor" report can be diagnosed from a
node trace without a live capture.
Cell-edge reachability is now asserted in test_sst_mouse (first row -> y=0, last row/col -> far edge).
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net