• src/doors/syncscumm/build

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sunday, July 19, 2026 00:11:00
    https://gitlab.synchro.net/main/sbbs/-/commit/2631ca69bb6a4c0929867b20
    Modified Files:
    src/doors/syncscumm/build.sh deploy.js xtrn/cascadequest/README.md install-xtrn.ini xtrn/spacequest0/README.md install-xtrn.ini xtrn/syncbass/.gitignore README.md install-xtrn.ini xtrn/syncqueen/.gitignore README.md install-xtrn.ini
    Log Message:
    syncscumm: name the door binary syncscumm, not scummvm

    The build output was ScummVM's default "scummvm". This IS our build (the Synchronet backend compiled in), so name it "syncscumm": it matches the
    door family and the sysop-facing syncscumm.ini config, and it avoids any
    PATH collision with a system-installed "scummvm" when the xtrn.ini cmd
    runs it. ScummVM's configure has no exe-name option, so build.sh renames
    the binary after make (the vendored build system is left untouched);
    deploy.js finds the new name; the four door cmds (scummvm%. ->
    syncscumm%.), the two denylist .gitignores, and the four READMEs follow.

    The per-user ScummVM config stays scummvm.ini: it genuinely is ScummVM's
    own config, and syncscumm.ini is ALREADY the door's own sysop-config
    filename (subtitles, sixel_max, [audio]; syncscumm.cpp reads it beside
    the binary), so renaming the config to match would collide two unrelated
    files in one directory. The resulting scheme is coherent -- "syncscumm"
    names our things (the binary, the sysop syncscumm.ini), "scummvm.ini"
    stays ScummVM's own per-user config.

    ---
    þ 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 Sunday, July 19, 2026 05:16:00
    https://gitlab.synchro.net/main/sbbs/-/commit/30be01007ab77314e82d0467
    Modified Files:
    src/doors/syncscumm/build.sh
    Log Message:
    syncscumm: build ScummVM in release mode (fix fatal SCI crashes)

    build.sh configured ScummVM as a developer build, so an SCI
    "uninitialized temp read" with no engine workaround was a fatal
    error() (engines/sci/engine/vm.cpp) rather than a warning -- crashing
    the door the instant a fan game's script hit one. Cascade Quest's
    Sound->Volume menu does exactly this (TheMenuBar::handleEvent, script
    997), for which ScummVM ships a workaround only for Betrayed Alliance.

    Add --enable-release-mode to configure, which defines RELEASE_BUILD:
    the uninitialized read becomes a warning + fake-0 and the game
    continues -- the tolerant behavior a shipped ScummVM release has, and
    what real ScummVM users get. It also drops dev-only asserts/debug
    (hashmap stats, celobj32 bounds checks), all benign. Not
    --enable-release, which additionally forces optimizations and turns on
    the update-checker (a door must not phone home).

    The Win32/MSVC build (create_project) already defines RELEASE_BUILD for
    its Release configuration, so this only brings the Linux build in line.

    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 Windows@VERT to Git commit to main/sbbs/m on Sunday, July 19, 2026 17:31:00
    https://gitlab.synchro.net/main/sbbs/-/commit/cd1a3106629e8f6846e9f610
    Modified Files:
    src/doors/syncscumm/build.bat deploy.js
    Log Message:
    syncscumm: auto-discover deploy targets instead of a whitelist

    deploy.js kept a hand-maintained PACKAGES list of xtrn dir names, which
    went stale: a title installed later (or a commercial title a sysop adds
    by hand in SCFG, e.g. a Maniac Mansion door) was silently skipped until
    someone edited the script.

    Replace it with syncscumm_dirs(), which finds every SyncSCUMM package
    the same self-updating way SyncRetro's deploy.js does, from the union of
    two markers: (1) the dir already holds a syncscumm binary -- the only
    marker for a hand-registered commercial title with no install-xtrn.ini;
    (2) an install-xtrn.ini whose cmd LAUNCHES the syncscumm binary -- the first-install marker, before any binary exists. The cmd test matches the invoked-binary token, not any mention, so the M2 test skeleton
    (xtrn/syncscumm, whose cmd runs ../build/scummvm) is correctly excluded.

    Verified against the live install: discovers all packages including a hand-added Maniac Mansion door (binary marker, no install-xtrn.ini), and
    on a bare checkout the shipped freeware packages minus the skeleton.

    build.bat's post-build hint updated to match ("every SyncSCUMM
    package").

    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 Sunday, July 19, 2026 18:26:00
    https://gitlab.synchro.net/main/sbbs/-/commit/9175853a791c6d1d9ddaa126
    Modified Files:
    src/doors/syncscumm/build.sh src/doors/syncscumm/door/CMakeLists.txt audio_term.cpp audio_term.h module.mk syncscumm.cpp video_term.cpp video_term.h src/doors/syncscumm/msvc/Directory.Build.targets
    Removed Files:
    src/doors/syncscumm/door/sst_io.h
    Log Message:
    syncscumm: wire the door onto the shared termgfx_termio module

    Task 3 moved sst_io.c/sst_plat.c out of the door and into termgfx as termgfx_termio.c/sst_plat.c, renaming the sst_io_* surface to
    termgfx_termio_*. This wires the door's C++ backend onto that shared
    module instead of a local copy, so the build links again.

    - syncscumm.cpp, video_term.{h,cpp}, audio_term.{h,cpp}: repoint the
    retired sst_io.h/sst_plat.h includes at termgfx/termgfx_termio.h and
    termgfx/sst_plat.h, and rename every sst_io_*/SST_KEY_*/SST_EV_*
    reference to termgfx_termio_*/TERMGFX_KEY_*/TERMGFX_EV_*. The
    TERMGFX_MOD_CTRL/ALT/SHIFT bit values differ from the old
    SST_MOD_CTRL/ALT (CTRL and ALT were swapped), so reading the new
    symbols instead of the old ones is what keeps pollEvent()'s modifier
    handling byte-identical to before the move.
    - SST_FB_W/H now read termgfx_termio.h's shared TERMGFX_TERMIO_FB_W/H.
    SST_AUDIO_RATE and sst_select_datadir() are door-specific (not part
    of the shared surface), so they stay door-side: SST_AUDIO_RATE is
    respelled as audio_term.h's own #define (still 24000, matching
    termgfx_termio.c's file-private copy), and sst_select_datadir() gets
    a door-side extern "C" declaration in syncscumm.cpp matching its new
    definition site.
    - door/sst_io.h is removed (superseded by termgfx_termio.h).
    - door/module.mk drops sst_io.o/sst_plat.o, now built into libtermgfx
    via termgfx's own CMake; build.sh's existing libtermgfx.a link and
    termgfx include path already cover them. Stale sst_io.c/.o comments
    in build.sh, door/CMakeLists.txt and the MSVC
    Directory.Build.targets are corrected to match (MSVC project itself
    is generated from module.mk by ScummVM's create_project, so no
    .vcxproj to hand-edit; not build-verified on this Linux host).

    Verified with a full clean ./build.sh (rm -rf build) producing
    build/syncscumm, and test/boot_bass.sh passing (165 frames, matching
    the pre-move run).

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows@VERT to Git commit to main/sbbs/m on Thursday, July 23, 2026 00:08:00
    https://gitlab.synchro.net/main/sbbs/-/commit/6287f78200818aa664a596fc
    Modified Files:
    src/doors/syncscumm/build.bat
    Log Message:
    syncscumm: bootstrap create_project from its CMake project

    build.bat built ScummVM's project generator from devtools/create_project/msvc/create_project.sln, which is not in this tree
    and never was: ScummVM's .gitignore blanket-ignores *.sln and *.vcxproj*,
    so upstream's bootstrap solution was never carried into the vendored copy.
    A fresh checkout therefore failed at step 2 with MSB1009, project file does
    not exist.

    devtools/create_project/cmake/CMakeLists.txt is tracked and builds the same sources -- ours, with the --synchronet patch -- so configure and build that instead, leaving the tool in the door's own build tree rather than back in
    the ScummVM source directory. The door builds from a clean checkout again.

    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 Windows@VERT to Git commit to main/sbbs/m on Saturday, July 25, 2026 00:18:00
    https://gitlab.synchro.net/main/sbbs/-/commit/15985e829639c90cf336f262
    Modified Files:
    src/doors/syncscumm/build.bat
    Log Message:
    syncscumm: rebuild create_project.exe on every build

    The Win32 build failed at project generation:

    [build] Generating MSVC project files (create_project --termgfx) ...
    ERROR: Unknown parameter "--termgfx"

    create_project is built from the vendored ScummVM sources, which carry a
    local patch adding that flag, but build.bat only built it when the .exe did
    not already exist. A copy produced before df6c0f44e0 (saver-19-week) --
    which renamed the flag from --synchronet -- was therefore reused against sources that no longer offered it. The error names the flag rather than
    the stale tool, pointing away from the cause.

    Build it unconditionally; CMake's own dependency check keeps the
    up-to-date case cheap. The comment above it still called the patch by the flag's old name.

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

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