colwin Reference
Repository

Format

TEXT — the game’s authored text

TEXT — the game’s authored text

Implemented in colwin/formats/text.py. 737 resources — 717 in COLTEXT0.DLL, 19 in COLDATA9.DLL, 1 in COLDATA0.DLL — and every one in COLTEXT0 and COLDATA9 carries the developers’ own name in the module’s RT_NAMETABLE.

The game resolves them by name: 453 of those identifiers appear as literal strings in COLONIZE.EXE.

Body format

Plain 8-bit text, LF-separated, with a small directive header:

@width=380
@default=1
Shall we indeed {abandon} our %STRING0 colony,
Your Excellency, forfeiting all of our hard work
here?

Yes, it is God's will.
Never! That would be folly.

Directives — @name=value, one per line, at the top:

Directive Count Meaning, from usage
@width 458 dialog width in pixels
@default 13 index of the default answer
@x, @y 3, 5 explicit dialog placement

Substitutions, filled in at runtime: %STRING0–%STRING4 (382, 210, 88, 49 and 6 uses), %NUMBER0–%NUMBER3 (125, 36, 11, 2), %COUNTRY (5), %F (1).

Markup:

Encoding

cp1252 in and out — which is what makes 0xA4 the currency sign ¤, so the editable file shows the gold glyph as a character rather than an escape. colwin writes UTF-8 files and converts on the way back; anything cp1252 cannot hold is refused by line number rather than silently replaced, because a mangled byte here is a mangled string in a shipped dialog.

CRLF is normalised to LF, which is how the game stores it.

Not everything here is prose

Some resources are data tables in text form. ARAWAK is a list of map coordinates —

37,29
32,25
31,27

— the Arawak villages’ starting positions. Part of the game’s scenario data, not just its wording, lives in the text resources.

A first sweep classified 51 bodies as “non-printable”. They are not: the only offending byte is 0xA4. All 717 bodies are text.