https://gitlab.synchro.net/main/sbbs/-/commit/35881f16ef0daf4dce26b628
Modified Files:
src/doors/syncconquer/PROVENANCE.md src/doors/syncconquer/vanilla/redalert/audio.cpp xtrn/syncalert/README.md syncalert.example.ini
Log Message:
syncconquer: caption the EVA announcements in Red Alert too
Tiberian Dawn has captioned its spoken EVA callouts since the vendored
patch that added them; Red Alert did not, so the same door shipped an accessibility feature to one title and not the other -- a deaf player, or
one on a terminal with no audio, simply lost "construction complete",
"unit ready" and "our base is under attack" in SyncAlert.
Same shape as the Tiberian Dawn patch: a caption table aligned to the
engine's own Speech[] table, emitted from Speak() when the door's
[game] captions gate is true. Red Alert's engine differs enough that
the code could not be copied across. Its VoxType carries 116 entries
rather than 40, including unused slots (captioned NULL, which the caption helper skips) and one that exists only in an English build, so the table reproduces that conditional to stay aligned elsewhere. Its message list
hangs off Session and takes a different argument list, so captions follow
Red Alert's own system-message call sites in house.cpp and taction.cpp
for color and timeout rather than Tiberian Dawn's. And its Add_Message()
does not dedup by id, so the "don't stack a repeat while it is still on
screen" behavior the other title gets for free is done explicitly with a
lookup first; caption ids are offset out of the TutorialText id space
those same call sites use, so an unrelated message can never be mistaken
for a caption already showing.
The caption is emitted ahead of, and independently of, Red Alert's audio
gate -- that gate gives up on volume, sample type or quiet mode, which is exactly the case captions exist to cover.
syncalert.example.ini gains the [game] captions key so the setting is discoverable rather than merely implemented, documented as the same
tri-state the sibling title uses: on, off, or auto (show them only when
the client has no usable audio).
Live-verified against a real session: the caption appears, and matches
the line being spoken.
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)