https://gitlab.synchro.net/main/sbbs/-/commit/54de3085923bf9535feec2ad
Modified Files:
src/doors/syncconquer/door/door_io.c
Log Message:
syncconquer: write the INI the ENGINE looks for, per title (syncdawn)
SyncDawn replayed Tiberian Dawn's from-install path on every launch -- the
long intro, then Choose_Side, then straight into a mission -- instead of reaching the main menu.
door_setup_engine_paths() hardcoded "REDALERT.INI" as the file it writes into the per-user -home dir, for both titles. But each engine asks PathsClass::Init() for its OWN config filename -- redalert/startup.cpp passes "REDALERT.INI", tiberiandawn/startup.cpp passes "CONQUER.INI" -- and
PathsClass looks for exactly that name. Under syncdawn the door was therefore writing a file the engine never opens, so [Intro] PlayIntro=false never
reached it, Get_Bool("Intro", "PlayIntro", true) defaulted true, and Special.IsFromInstall fired every session (tiberiandawn/startup.cpp).
Add DOOR_ENGINE_INI to the per-title identity block (CONQUER.INI for TD, REDALERT.INI for RA) and write that.
It hid behind a door that otherwise worked. TD takes its mixes from door_engine_data_dir() rather than the INI's [Paths] DataPath, so the game
data loaded fine and nothing looked wrong -- while PlayIntro, and the savegame location, silently never reached the engine.
It also LOOKED platform-specific, and wasn't. With no INI beside argv[0] the engine's ini.Save() falls back to PathsClass::User_Path(): ~/.config/vanilla-conquer/vanillatd on POSIX, %APPDATA%\Vanilla-Conquer\vanillatd on Windows. That write persists for the *nix BBS user -- so from the second run on, Linux found PlayIntro=false and behaved, quietly papering over the bug -- but not for the Windows service account, where every run was thus a first run. That fallback is wrong for a door either way: it is ONE file shared by every caller, the very thing -home exists to prevent, and it is where TD's savegames had been going instead of
the player's own directory.
Verified on both hosts: data/user/<n>/tibdawn/CONQUER.INI is now created with our [Paths]/[Intro] plus the engine's own persisted [Mouse]/[Video] settings (the merge-don't-clobber path holding), and syncdawn boots to the main menu. The REDALERT.INI previously left in a tibdawn/ home is inert -- TD never read it -- and can be deleted.
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net