• src/doors/syncdoom/syncdoom.c xtrn/syncdoom/controls.msg

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Jun 21 00:59:50 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6f60a597729a11e814984075
    Modified Files:
    src/doors/syncdoom/syncdoom.c xtrn/syncdoom/controls.msg
    Log Message:
    syncdoom: frame de-dupe + overlay throughput + auto-depth retune

    Follow-ups to the adaptive frame pacing (3f94d6c31), driven by live VPN/LAN testing and the exit telemetry now in the BBS log.

    Frame de-dupe:
    - emit_frame keeps a copy of the last framebuffer sent and skips a byte-identical
    re-render -- the duplicates Doom emits between its 35fps sim tics, plus any still
    scene. Caps the wire rate at the real visual rate and saves the redundant bytes
    (logs show 50-75% of renders skipped). Cache is invalidated on any label flash or
    geometry change so the screen never goes stale.
    - The Ctrl-S overlay no longer suspends de-dupe (which defeated the point while you
    watched the meter): the frame body is de-duped independently, and the overlay
    refreshes only when its text changes, so a static screen costs ~nothing. This also
    cures the overlay flicker (it was repainting row 1 every frame).

    Stats overlay + telemetry:
    - Overlay shows transmit throughput (KB/s to the player) and reads "depth N/auto";
    dropped the "SyncDOOM" label for room. Exit telemetry logs the de-duped count.
    - Ctrl-T's centered popup is suppressed while the overlay is up (it already shows
    the live depth/RTT) so it can't obscure the game.

    auto-depth retune (max_inflight):
    - Floor depth at 2 once RTT > ~30ms: depth 1 is one frame per round-trip -- a
    slideshow on a remote link -- so never auto-park a far player there.
    - The BDP cap now only applies while actively streaming (recent fps >= 10). An idle
    or de-duped lull drops the frame rate for lack of MOTION, not bandwidth; capping
    on that was clamping depth to 1 right as the next move began (the logged
    "depth=1 on a 211ms link" bug). The RTT-inflation backoff stays the real bloat
    guard, and heavy queuing now drains all the way to 1 to flush a backlog.

    controls.msg: add the Ctrl-S row + color/style refresh.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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