• src/doors/syncscumm/DESIG

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Wed Jul 22 20:38:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/f9dfddec92f85b98f0182c54
    Modified Files:
    src/doors/syncscumm/DESIGN.md
    Log Message:
    syncscumm: drop the game-picker/lobby from DESIGN.md (never planned)

    DESIGN.md advertised an in-door "game picker" / "lobby" (the M5
    milestone: picker/lobby, fetch-games.js, curated catalog) that was never
    built and is not planned. A user on IRC read those references and asked
    where the SyncSCUMM game chooser was -- it does not exist. What actually shipped is one binary with a separate installable xtrn package per title (SyncBASS, SyncQueen, SyncLure, SyncDrascula ready-made; commercial
    titles when the sysop supplies data), which is a better fit than a picker
    given ScummVM supports thousands of games.

    Correct the doc to match reality:
    - Status line: shipped, one binary + one xtrn package per title, no
    in-door picker/lobby.
    - "Multi-title from day one" bullet: reframed as multi-title/one-binary
    via per-title xtrn packages; the freeware flagships named with their
    shipped package names.
    - Install-side tree: replaced the fetch-games.js + "lobby JS + curated
    catalog picker" rows with the per-title package layout; noted the
    freeware auto-provisioner (getgames/fetch-games.js) as a deferred idea,
    not shipped.
    - Milestones: M5 keeps what shipped (saves, node.exb, per-title
    install-xtrn.ini, docs) and explicitly lists the picker/lobby as
    dropped/not-planned and fetch-games.js as deferred.

    Docs only; no code change. Prompted by Accession's question on IRC.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sun Jul 26 01:15:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/1f1a3e5d4ebeb8431813e0d3
    Modified Files:
    src/doors/syncscumm/DESIGN.md README.md src/doors/syncscumm/door/help_term.cpp syncscumm.cpp src/doors/syncscumm/syncscumm.example.ini src/doors/termgfx/termgfx_termio.c termgfx_termio.h
    Log Message:
    termgfx: trade the letterbox for a stretch, syncscumm gets Ctrl-F

    SyncConquer has had a Ctrl-F that switches its picture between true
    proportions and stretched-to-the-canvas, and it is the one shape control
    that works on SyncTERM. SyncSCUMM had nothing equivalent.

    It could not simply reuse the "aspect" ini key it already has. That one
    answers a different question -- the shape of the SOURCE's pixels, square
    vs 4:3 -- and stands down entirely on SyncTERM, which applies a shape of
    its own per video mode and cannot be asked which way it is set, so
    correcting there too would correct twice. What was missing is the other question: whether to keep the bars a true-ratio fit leaves down the sides
    or stretch over them. That one is meaningful on every terminal.

    So termgfx_termio grows the fit toggle and syncscumm binds Ctrl-F to it,
    the same split as the F4 tier step: the mechanism is shared, the key is
    the door's to choose. syncretro and syncrpg bind nothing and are
    unaffected. Fill caps at TERMGFX_SCALE_MAX on both axes because the
    scaler and the sixel encoder do; an uncapped full-canvas width would be centered as if it were wider than what is actually emitted, landing the
    image flush left with a lopsided right margin. Toggling invalidates and
    clears, since returning to a narrower image uncovers margins the wider
    one had painted.

    The mode rides on the stats strip's tier token as "sixel fill", the
    spelling the sibling door already uses, so the two read alike.

    Ctrl-F costs SCUMM's "fast mode". That un-paces the game and floods the
    wire, which is not something a door should be offering, and its Ctrl-G
    sibling was already spent on the menu key.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sun Jul 26 01:15:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/4a68bac250ef7acd031508ac
    Modified Files:
    src/doors/syncscumm/DESIGN.md README.md src/doors/syncscumm/door/syncscumm.cpp src/doors/syncscumm/syncscumm.example.ini src/doors/termgfx/termgfx_termio.c termgfx_termio.h
    Log Message:
    syncscumm: remember each caller's letterbox/fill choice

    Ctrl-F lasted only as long as the session, so a caller who preferred one framing had to set it again on every call. SyncConquer, which has had this
    key far longer, remembers it; there was no reason for the two to differ.

    Kept the same shape as the sibling's: a flag file whose presence means
    fill, written beside the caller's saves in their --savepath directory, so
    it needs no config file, no new directory, and no cleanup when a user is removed. A run without a --savepath -- a dev launch, or another BBS's
    command line -- simply does not persist, rather than falling back to some shared location where one caller's taste would become everyone's.

    termgfx gains only a setter, called before the first present, where the existing cycle both invalidates and clears. The door owns the file, which
    keeps the door-vs-library split the tier and fit keys already follow.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

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