• src/doors/syncretro/GAMES_INI.mdexec/load/syncretro_lobby.js src/doors

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Fri Jul 24 11:06:26 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/b7c59b78c62840b5edc2ed23
    Added Files:
    src/doors/syncretro/GAMES_INI.md
    Modified Files:
    exec/load/syncretro_lobby.js src/doors/syncretro/.gitignore main.c probe_core.c syncretro_games.c test_binds.c test_games.c
    Log Message:
    syncretro: fix games.ini review findings, track GAMES_INI.md

    Applies the final code review of the games.ini feature.

    - Track GAMES_INI.md (was never git-added, though four shipped files
    already cite it) and correct it: mark the feature implemented, amend
    sec 7 so a missing/mistyped/unmeasured cabinet stays non-fatal but
    is now reported (the old "no log noise" wording conflated "don't
    fail" with "don't speak"), and document the stick2 asymmetry as a
    known, deliberate limitation (button.* absent means unmeasured;
    stick2 absent means one stick).

    - syncretro_games.c: fix the button.* validator, which used
    strncmp()/strcmp() while every xpdev ini lookup matches keys
    case-insensitively (stricmp() in ini_file.c) -- a lower-case
    "button.y" was honoured by the reader and flagged as invalid by the
    validator in the same breath. Switch to strnicmp()/stricmp().
    test_games.c gains a case proving this and failing against the old
    comparison.

    - sr_games_load() now reports which of three states it found (a
    loaded section, no section, or no file) in one stderr line, so a
    missing file, a typo'd section name, and a genuinely unmeasured
    cabinet are no longer indistinguishable from each other or from
    success.

    - syncretro_lobby.js warns once if a dead names.json is still present
    next to games.ini, since only a sysop's hand-added titles silently
    vanish when it stops being read.

    - probe_core.c: -hold no longer sits behind the -coin guard, so it
    works standalone -- previously the only tool for measuring a
    games.ini entry silently did nothing without -coin.

    - Smaller fixes: syncretro_games.c's path buffer is PATH_MAX instead
    of a silently-truncating 512; main.c's stale sr_games_load() comment
    clause is trimmed; the syncretro .gitignore covers build-test/ and
    build-probe/; two untracked *.pre-syncarcade.bak files are removed;
    test_binds.c pins that every arcade button row's solo spelling
    agrees with the key that actually reaches it.

    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)