• src/doors/syncretro/syncretro.h syncretro_input.c syncretro_io.c

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Tue Jul 21 01:41:46 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/990418baddfa1cbfa276ed88
    Modified Files:
    src/doors/syncretro/syncretro.h syncretro_input.c syncretro_io.c
    Log Message:
    syncretro: hide the client's status line to reclaim its row

    A terminal that shows a status line reserves its bottom text row for it -- SyncTERM's default turns an 80x25 / 640x400 client into an 80x24 / 640x384 canvas -- so the door fractionally downscales every frame and loses single-pixel detail for nothing. That row matters more here than for a landscape console: an upright arcade game is height-bound.

    termgfx has had the DECSSDT seam for this all along, and syncduke, syncdoom, syncconquer and syncscumm all use it; SyncRetro was the one door that never adopted it. Emit termgfx_term_status_off BEFORE the canvas probe so the
    probe reports the reclaimed size -- after it, the door would scale to the
    old canvas and the row would go to waste.

    The sequence is prefixed with a DECRQSS query of the current setting; syncretro_input.c captures the reply (rolling window, since a 10-byte DCS
    can arrive split over a BBS link) so sr_io_leave() restores the player's
    status line to what it WAS rather than guessing. The BBS lent us the
    terminal; a door that hides the sysop's status line and never puts it back
    has broken his client. Falls back to 1 (indicator, SyncTERM's own default)
    if the terminal never answers. Terminals with no status line, or no
    DECSSDT, ignore the whole thing.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net