• src/doors/syncscumm/door/sst_io.c src/doors/syncscumm/test/test_sst_mo

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Saturday, July 18, 2026 03:02:49
    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