• src/doors/syncretro/syncretro_io.c

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Tue Jul 21 02:32:20 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/321118d1b3d2d329310684ce
    Modified Files:
    src/doors/syncretro/syncretro_io.c
    Log Message:
    syncretro: say "n/a" when the client cannot patch, not "0%"

    The stats bar had three situations and two labels. Patching a frame needs the client to persist its sixel colour registers between images, which is a SyncTERM property, so on any other terminal the dirty-rect share is structurally zero -- and it was reported as "dr 0%", which is also what a SyncTERM client shows when a game happens to move every pixel.

    The comment defending "0%" argued that it tells the reader the feature is on. It does, where patching is possible. Where it is not, it reads as a
    measurement of something that was never attempted.
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Wed Jul 22 20:38:40 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7cec42bc19e9d30efe74eafe
    Modified Files:
    src/doors/syncretro/syncretro_io.c
    Log Message:
    syncretro: enable dirty rects on non-SyncTERM terminals

    Drop the SyncTERM-only clause from the dirty gate and emit each
    non-SyncTERM patch with SIXEL_PAL_USED, so a patch carries only its
    handful of used colours instead of the full 256-register palette the
    old code judged "far more than one frame". That judgement was correct
    under the all-or-nothing palette; subsetting overturns it. Patches are self-describing, so they do not depend on the ?1070l register-
    persistence request; band_align (from the prior commit) keeps their
    geometry safe on cell-anchored terminals. SyncTERM keeps zero-palette
    patches unchanged. The stats overlay's "dr n/a" now means only "no
    usable cell grid", not "not SyncTERM".

    Verified headlessly: syncretro build.sh succeeds, and the standalone
    dirty-rect unit test (test_dirty.c) passes. Live foot visual smoke
    testing (confirming dr N% on-screen and no black strips along patch
    bottoms in sparse scenes) is PENDING -- a manual step not yet run.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)