• src/doors/syncdoom/README.md i_video.c m_menu.c syncdoom.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jul 17 02:57:08 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/71564a02fa7cfd44b359d51b
    Modified Files:
    src/doors/syncdoom/README.md i_video.c m_menu.c syncdoom.c
    Log Message:
    syncdoom: gamma correction -- persist it, and reach it with Ctrl-G

    F11 cycles Doom's gamma correction and I_SetPalette applies it, but the
    setting never survived a session: I_BindVideoVariables() is an empty stub
    in the terminal renderer, so usegamma was never bound to the config, and
    both the save and load paths skip unbound variables by design. Bind it --
    it then rides the existing save-on-exit paths, including the hangup and time-limit exits that bypass I_AtExit.

    F11 itself is unreliable over a terminal: host terminals commonly claim it
    for their own fullscreen toggle (Windows Terminal does), so it may never
    reach the door. Map Ctrl-G to it as well -- "G" for gamma, and 0x07 is the
    last free control byte (Ctrl-H/I/J are Backspace/Tab/Enter, which is why
    the existing Ctrl-A..F = F1..F6 run stops at F6). Every client path --
    legacy bytes, kitty, SyncTERM evdev -- folds Ctrl+letter to its control
    byte before map_ascii, so the single mapping covers all of them. F11 keeps working wherever the terminal passes it through.

    The in-game F1 controls reference now lists the key, and the README key
    table gains a Ctrl-G row.

    Also correct a stale claim in the README paragraph being edited: only
    cheat codes need typing in UPPERCASE. Save-game names and chat messages do
    not -- map_ascii lifts the WASD shadowing whenever menuactive or chat_on
    is set, so typed text arrives verbatim.

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