• src/doors/syncscumm/door/video_term.cpp

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Sat Jul 25 23:10:03 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/a971badeea5084c7eda2b3d9
    Modified Files:
    src/doors/syncscumm/door/video_term.cpp
    Log Message:
    syncscumm: capture the frames the encoder saw, for exact replay

    Comparing two builds of the encode path on GAMEPLAY has no good answer otherwise. A cutscene is deterministic and can just be replayed by both,
    but it is full-motion video: most of its frames legitimately exceed the
    patch budget, so it measures the one case none of this work can improve.
    Actual play is where the patch path earns its keep -- and a point-and-click game does nothing without a human in it, while no human walks the same
    route twice closely enough to see a ten-percent difference.

    So capture what the encoder was handed. A touch-file writes every
    (indices, palette) pair passed to termgfx_termio_present() to /tmp/<door>.<pid>.frames; replaying that file through two builds gives byte-identical input where the only variable left is the code. One session played once, and the corpus stays valid for the next change too.

    Deliberately the pair passed to present() rather than the game surface:
    the quantized overlay path substitutes its own indices and palette, and a measurement of the encoder wants exactly what the encoder got.

    Gated by a touch-file, not an env var, like the trace and wirecap gates
    next to it -- the BBS execvp()s the door with no shell, so a variable set before launch never arrives. Absent, nothing is opened and nothing is
    written. Buffered, so a capture cannot turn present() into a synchronous
    write on the frame path.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Windows 11)@1:103/705 to Git commit to main/sbbs/master on Sat Jul 25 23:32:58 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/bbce3bed65f582e57c55e129
    Modified Files:
    src/doors/syncscumm/door/video_term.cpp
    Log Message:
    syncscumm: the framedump gate goes through the door's platform seam

    MSVC has no <unistd.h>, no access()/F_OK and no getpid(), so the frame
    capture added in a971badeea broke the windows-x86 build with video_term.cpp(17,10): error C1083. Use termgfx_plat_file_exists() and termgfx_plat_getpid(), as termgfx_termio.c's identically-shaped trace and wirecap touch-file gates already do.
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)