https://gitlab.synchro.net/main/sbbs/-/commit/bdcfda5915a2c5e7a88d95fd
Added Files:
src/doors/syncconquer/plans/2026-07-11-syncdawn-vendor-plan.md src/doors/syncconquer/vanilla/tiberiandawn/CMakeLists.txt aadata.cpp abstract.cpp abstract.h adata.cpp aircraft.cpp aircraft.h anim.cpp anim.h audio.cpp base.cpp base.h bbdata.cpp bdata.cpp building.cpp building.h bullet.cpp bullet.h cargo.cpp cargo.h cc_icon.rc ccini.cpp ccini.h cdata.cpp cell.cpp cell.h checkbox.cpp checkbox.h cheklist.cpp cheklist.h colrlist.cpp colrlist.h combat.cpp compat.h confdlg.cpp confdlg.h conquer.cpp conquer.h const.cpp coord.cpp credits.cpp credits.h debug.cpp debug.h defines.h dial8.cpp dial8.h dialog.cpp display.cpp display.h dllinterface.cpp dllinterface.h dllinterfaceeditor.cpp dllinterfaceversion.h door.cpp door.h drive.cpp drive.h drop.cpp drop.h edit.cpp edit.h ending.cpp ending.h event.cpp event.h expand.cpp externs.h facing.cpp facing.h factory.cpp factory.h findpath.cpp flasher.cpp flasher.h fly.cpp fly.h foot.cpp foot.h function.h fuse.cpp fuse.h gamedlg.cpp gamedlg.h gauge.cpp gauge.h globals.cpp goptions.cpp goptions.h gscreen.cpp gscreen.h hdata.cpp heap.cpp heap.h help.cpp help.h house.cpp house.h iconset.cpp idata.cpp infantry.cpp infantry.h init.cpp intro.cpp intro.h iomap.cpp ioobj.cpp ipxconn.cpp ipxconn.h ipxgconn.cpp ipxgconn.h ipxmgr.cpp ipxmgr.h jshell.cpp jshell.h layer.cpp layer.h lib.cpp license.txt list.cpp list.h loaddlg.cpp loaddlg.h logic.cpp logic.h map.cpp map.h mapeddlg.cpp mapedit.cpp mapedit.h mapedplc.cpp mapedsel.cpp mapedtm.cpp mapsel.cpp menus.cpp miscasm.cpp miscasm.h mission.cpp mission.h monoc.cpp monoc.h mouse.cpp mouse.h mplayer.cpp msgbox.cpp msgbox.h msglist.cpp msglist.h netdlg.cpp nulldlg.cpp object.cpp object.h odata.cpp options.cpp options.h overlay.cpp overlay.h phone.h power.cpp power.h profile.cpp queue.cpp radar.cpp radar.h radio.cpp radio.h reg_icon.rc reinf.cpp rules.cpp rules.h savedlg.h saveload.cpp scenario.cpp scenario.h scenarioini.cpp score.cpp score.h scroll.cpp scroll.h sdata.cpp session.h shapebtn.cpp sidebar.cpp sidebar.h sidebarglyphx.cpp sidebarglyphx.h slider.cpp slider.h smudge.cpp smudge.h sounddlg.cpp sounddlg.h special.cpp special.h stage.h startup.cpp stats.cpp super.cpp super.h tab.cpp tab.h tarcom.cpp tarcom.h target.cpp target.h tdata.cpp team.cpp team.h teamtype.cpp teamtype.h techno.cpp techno.h template.cpp template.h terrain.cpp terrain.h textblit.h textbtn.cpp textbtn.h theme.cpp theme.h tile.h trigger.cpp trigger.h turret.cpp turret.h txtlabel.cpp txtlabel.h type.h udata.cpp unit.cpp unit.h visudlg.cpp visudlg.h winstub.cpp
Modified Files:
src/doors/syncconquer/CMakeLists.txt PROVENANCE.md build.sh deploy.js src/doors/syncconquer/door/door.h door_io.c src/doors/syncconquer/vanilla/common/cdfile.cpp src/doors/syncconquer/vanilla/redalert/options.cpp
Log Message:
syncdawn: vendor Tiberian Dawn and build it as the door's 2nd title
Adds SyncDawn -- Command & Conquer: Tiberian Dawn -- as the second title
of the SyncConquer door family, built from the SAME door seam and vendored Vanilla Conquer engine as SyncAlert (Red Alert).
- Vendor vanilla/tiberiandawn/ at the already-pinned Vanilla Conquer commit
(7f351daed0), same subset policy as the rest of the tree.
- CMakeLists.txt: make BUILD_VANILLATD an overridable cache var (was FORCE
OFF) and add a guarded if(TARGET VanillaTD) block that mirrors VanillaRA
(console subsystem, the door engine-seam TUs, termgfx, JXL, xpdev), builds
with SYNCCONQUER_TD, and names the binary syncdawn. build.sh builds both
titles by default ("./build.sh ra" = Red Alert only); deploy.js deploys
both (syncdawn skipped if not built).
- door/door_io.c: title-agnostic per-target identity (SYNCCONQUER_TD selects
the DOOR_SHORT_NAME/DISPLAY_NAME/GAME_NAME branding, the required-asset
manifest DOOR_ASSET_REQ, and the per-node data-dir/log/cache basename so
the two titles never collide); a door_engine_data_dir() accessor the TD
engine reads for its file-search path; and movie suppression via the
door's <name>.ini "[game] movies" (door_config_no_movies) instead of an
env var. door.h declares the accessor.
- Vendored local patches on top of tiberiandawn/ (and two shared common/,
redalert/ files) for the door: font/palette load from cached mixes with a
fallback for fonts the freeware data omits; keep the assets dir on the
engine file-search path across CD-check refreshes (common/cdfile.cpp); the
FMV cutscene-audio enable; the game-neutral music-volume hotkey hook
(redalert/options.cpp rename + a TD hook); the Sound Controls slider widen;
and a SyncDawn version line in the menus. Each is recorded in PROVENANCE.md
(patches 21-26).
SyncAlert (Red Alert) is unchanged -- its branding, asset manifest, and
paths are the default when SYNCCONQUER_TD is undefined.
Co-Authored-By: Claude Opus 4.8 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net