cosmonarchy-bw-prerelease/tools/linux/README.md
Kenny Udovic f3f61dc35d 25 August 2026 -- Running in Wine - tooling
Ported from cosmonarchy-bw-release 46d191e, minus plugins/gptp.qdp:
this repo's gptp.qdp is its own newer build (last rebuilt in c7cee7f7)
and the release binary would regress it.
2026-08-25 20:20:52 -04:00

2.8 KiB
Raw Blame History

Linux / Wine setup

Cosmonarchy runs under Wine, but a stock prefix gets four things wrong. Each one fails in a way that does not name its own cause, so they are collected here.

tools/linux/setup-bottle.sh --check      # report, change nothing
tools/linux/setup-bottle.sh              # apply

Defaults to the Bottles bottle named Blizzard. Use --bottle NAME for a different bottle, --prefix PATH for a plain WINEPREFIX, and --game-dir PATH if the StarCraft directory cannot be read from the prefix's registry.

Every change is backed up next to the file it modifies. --check exits non-zero when something is missing, so it works in a pre-flight.

What it fixes

Symptom Cause Fix
Fraud Launcher 2 exits instantly .NET 8 loads icu.dll, which Wine forwards to a nonexistent icuuc68.dll DOTNET_SYSTEM_GLOBALIZATION_USENLS=1
Fonts could not be loaded aize_debug.qdp opens lucon.ttf / arialuni.ttf with FreeType; Wine ships neither drop DejaVu in under those filenames
Entirely black screen Wine loads its own ddraw.dll, ignoring cnc-ddraw, so StarCraft does a real 640×480 fullscreen mode switch ddraw=native,builtin
Black window, correct size cnc-ddraw's renderer=auto draws black here renderer=gdi

Notes

  • The launcher failure shows up in Wine's output as err:module:find_forwarded_export module not found for forward 'icuuc68.u_charsToUChars_68'. DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 also works but discards culture support, so NLS is preferred.
  • FreeType opens fonts by path, not by name, so any monospace / wide-coverage TTF under those two filenames satisfies it. Needs fonts-dejavu (or Liberation / Noto, which the script also accepts).
  • renderer=gdi and clearing shader= were changed together, so which one mattered is not isolated. The bundled GLSL shader only applies to the OpenGL renderer, so it is inert under GDI either way — if you want it back, try renderer=opengl first.
  • Only the global [ddraw] section of ddraw.ini is touched; the per-game preset sections below it are left alone, and CRLF endings are preserved.
  • The ddraw override is written to user.reg directly, so close the game first — Wine rewrites that file from memory when the last process exits.

Verified on

Bottles Blizzard bottle, runner GE-Proton10-25, X11, dual 2560×1440. Plain system wine 10.0 could not boot even vanilla StarCraft here (null call through storm.dll ordinal 313 during 640×480 init), so GE-Proton is the supported runner.

Fraud Launcher 2 installs to C:\Cosmonarchy\: Starcraft\ is a stock 1.16.1 install, Release\ is a git clone of this repo. The game runs from Release\Cosmonarchy BW.exe, and _qdp-hotloader.qdp packs Release\mpq\ into Release\temp.mpq and loads it alongside the plugins.