Skip to content

Repository files navigation

Dark-Colony

Dark Colony - real time strategy released in 1997

Repository contains:

  1. working copy of the original game
  2. working copy of standalone expansion pack
  3. working copy of map editor
  4. the patch tools (patch_resolution.py, patch_cursor.py, hud_layout.py, pad_background.py, spr.py, logo_art.py, paint_intro.py) and the reverse-engineering notes (DC16_BATTLE_ENGINE.md, DC16_DISPLAY_AND_RESOLUTION.md) live in the sister repository Dark-Colony-Server since 10 Sep 2026: tools/ and docs/, next to the network-protocol notes and the relay server. This repository keeps only the game files. The tools take the game directory or executable as an argument, e.g. python ../Dark-Colony-Server/tools/patch_cursor.py verify "DC - Council wars/Dark Colony.exe".

Since 15 Sep 2026 both games run from the one folder DC - Council wars/ (its root is the complete Classic data set, the expansion lives in exp/): the untouched Classic exe is DC - Council wars/dc16.exe (kept; its patched build Dark Colony.exe was deprecated on 1 Oct 2026 and left the installer on 5 Oct 2026); the Council Wars pair is ENGEXP16.EXE / Dark Colony Ultimate.exe (Council Wars plus the Dark Colony, OZI and Academy campaigns in its menu); the map editor pair is Dark Colony - Map editor/maped.exe / Dark Colony Map Editor.exe. The patched builds were renamed on 25 Sep 2026 - until then dc16new.exe, engexp16new.exe and maped_ozi_ns_v1.2.exe (git history follows the renames) - and since then they carry a high-resolution icon (DC - Council wars/DC_HD.ICO, re-drawn from the game's own 32x32 DC.ICO). Everything the DC - Classic/ folder held (the folder itself was removed on 15 Sep 2026; its history stays in git) is in the Council Wars folder as well - the Classic briefings MISSION/, the ENCYCLO/ unit encyclopedia, the wallpapers, the map tool SCENARIO/MPLAYER/PMAP.EXE, the older map revisions SCENARIO/MULTI-~1/, and the Classic movies whose names clash with Council Wars' own as AVI/DCINTRO.AVI, AVI/DCAENDING.AVI, AVI/DCHENDING.AVI (the DARK COLONY mode of Dark Colony Ultimate.exe plays them as the campaign endings; the untouched Classic exe plays Council Wars' INTRO.AVI and endings there, and - because its sound loader looks under exp/ first - the Council Wars briefings for missions 1-8; the former Dark Colony.exe build had two fixes for that, movies and sounds, which left the installer with it on 5 Oct 2026). The map editor stays in its own folder Dark Colony - Map editor/ (its maped.exe is byte-identical to DC\MAPED.EXE on the Dark Colony CD; the Council Wars CD carries no editor). Since 15 Sep 2026 that folder also holds Dark Colony Map Editor.exe, built by the patcher from maped.exe: the ozi_ns editor (maped_by_ozy_ns_v1.2PL.exe) turned out to contain no code change at all - its code, imports and relocations are byte-identical to the original - only a Polish translation, an icon, a new title and one functional thing: the "disabled" flag cleared on dialog controls the original greyed out (the Atlantis / Training / Special block-set buttons of New Map, the Team Colour and Allies groups of Team Attributes, the Healer row of Troop Attributes, plus a close box on that dialog). Dark Colony Map Editor.exe was exactly those 24 one-byte unlocks on the English original until 1 Oct 2026; since then it un-greys everything the editor ships greyed out (79 one-byte resource edits, no code): the AI Type and AI Slots fields of Team Attributes, the Campaign scenario type, the File menu's Super Gen / Load MED / Save MED (the editor's own document format and the developers' batch export), the Block Type menu, the City State and Troop Attributes dialogs (their menu entries had no handler - they are re-pointed to the two command ids the dialogs listen to), the two Leutenant entries, the six single artifacts, the Lights menu, the Trigger tool with Edit Trigger String, and the Flag tool with the AI Flags menu (a dead feature: the game has no flag object, a placed flag becomes a player-0 mining tower - leave that fix unticked unless experimenting). The unchanged code already handles every control; the one entry left greyed, Edit Text, has no code path at all. Why each control was greyed: docs/DC16_MAP_FILES.md section 13 in Dark-Colony-Server. The three block sets need scenario\atlantis.set, trainh.set, special.set and special.bts next to the editor; the editor says "Can't open file" without them. Since 15 Sep 2026 the editor folder ships scenario\atlantis.set (828 prefab blocks generated from the eleven existing Atlantis maps by tools/blockset.py in Dark-Colony-Server, every tile checked against ATLANTIS.BTS) with scenario\atlantis.bts, so New Map -> Atlantis works out of the box; Training and Special still need the ozi_ns pack files. The untouched Classic exe needs its CD: a CD image with a /DC/ tree mounted on the drive named in HBNFUFL.A01 (the Council Wars image has one).

  1. the untouched original executables: DC - Council wars/dc16.exe (the dc16.exe of the January 1998 update, the build every patch here is based on; until 15 Sep 2026 it was DC - Classic/dc16original1998.exe) and DC - Council wars/ENGEXP16.EXE (from the Council Wars CD). Since 14 Sep 2026 they run out of the box beside the patched exes: the stock 640x480 menus, HUD and briefing lists are back under their original names in INTRFACE/, GAMESTAT/ and SPRITES/, the 1024x768 versions live under the same names in INTRF_HD/ (Council Wars also exp/intrf_hd/, ozi_ns/intrf_hd/) with the re-baked logo sprites as SPRITES/*_HD.SPR, and the patched exes read intrf_hd/... for exactly those files (30 path strings, the "Interface data from INTRF_HD" fix). The originals still look for the CD, and the original Council Wars exe without its disc greys main-menu buttons that its own menu script never defines and dies on an assert (widget.c line 152, hidden behind the full screen) - the shipped game did the same. A CD-free 640x480 build is one patcher command away and runs beside the 1024x768 exes: Apply-DarkColonyPatches.ps1 -Original <original> -Patches nocd (the one CD fix: the 2025 bypass bytes plus the removal of the whole CD path, so the build also works on PCs where drive D: is a card reader, an empty DVD drive or a sleeping disk). Such special builds are not committed; since 5 Oct 2026 the repository ships no patched file at all - the untouched originals, the game data and the installer, and every patched executable and interface set is built on the player's PC by INSTALL.CMD (until then the fully patched 1024x768 exes and their interface set were committed). Council Wars' own 640x480 menu backdrops exp/intrface/intrg.gif / intro.gif come from the CD (they were missing from the install the folder was copied from). Every file the original exes read is byte-identical to the CD (checked against the whole /EXPENG/ tree of the Council Wars CD; the OZI pack's additions live under their own names exp/animozi.dat, exp/animate/tranozi.fin, exp/sprites/tranozi.spr). To run the untouched original itself, mount the Council Wars CD image so that it becomes drive D: (the letter in hbnfufl.a02): the game checks that D:\dc\anim.dat exists and that the drive refuses writes. A .bin image has to be converted to .iso first (data track only) - Windows mounts .iso files with a double-click
  2. the installer: INSTALL.CMD, PATCH_HOWTO.TXT and the folder patcher/ - patcher/Apply-DarkColonyPatches.ps1 (the patcher, see the next section) and a copy of its own data files, patcher/game/ (copied into the game folder when it patches: the painted backdrops and HUD frames per size in HD_SRC/, the console banks, the re-baked logo banks, the tracer bullets, the icon DC_HD.ICO, the ozi_ns mission pack ozi_ns/ with the pack's units in exp/, the DARK COLONY mode's tables in dc/, DEFAULT_SERVER.TXT) and patcher/editor/ (the map editor's Borland runtime DLLs and the Atlantis block set). The game folders keep the same files where they always were, so the repository plays as checked out and the copy changes nothing there; the folder is the source for the installer package - INSTALL.CMD, PATCH_HOWTO.TXT and patcher/, nothing of the game itself in it, published on ModDB and as the repository Dark-Colony-Ultimate, where the installer is licensed under the AGPLv3 (tools/publish_installer.py in the server repository copies the package there; the license section of PATCH_HOWTO.TXT says what the license does and does not cover): there the installer copies the game from the player's own two discs, rips the soundtrack and adds these files (the welcome page's checkbox, see the next section). tools/resources.py sync|check in the server repository keeps the two copies equal. Step-by-step instructions for players in PATCH_HOWTO.TXT.

Playing online: ONLINE WAR

Dark Colony Ultimate.exe has an ONLINE WAR button at the top of the main menu's right column (since 29 Sep 2026). It reads the relay's name and address from DC - Council wars/DEFAULT_SERVER.TXT (plain text with C++-style comments and two fields, name=https://github.com/endotermic/Dark-Colony-Server and address=dark-colony-server.fly.dev; both are shown above the connection state on the ONLINE WAR and REPLAY ONLINE GAME screens), connects to it with TLS on port 8889, shows the rooms the relay offers - map, terrain, seats, players, bots, status - and joins the room you pick; the relay chooses a free slot for you and the usual lobby follows. To use another relay edit that file (address=host[:port], and the word plain on a line of its own for a LAN relay without a certificate, which then uses the plain port 8888; a file of the earlier form holding just the address is still understood). ONLINE.LOG beside the exe records each step of a connection attempt. CUSTOM NET WAR (the in-game host and CONNECT TO SERVER screens; the button was called MULTI PLAYER WAR until 3 Oct 2026) is unchanged. The server side is the sister repository Dark-Colony-Server.

REPLAY ONLINE GAME (the button under ONLINE WAR, since 2 Oct 2026) lists the battles the relay recorded - date and time (UTC), map, terrain, seats, players, computer players, length; the relay keeps the newest 50 - and, right of the list, the eight players of the selected battle with a radio box each. Tick one and REPLAY plays that battle back to you from that player's seat: the same lobby, then the battle exactly as it happened, with that player's fog of war and base; you can scroll the map and open the dialogs, nothing else, and QUIT ends the viewing. The relay's bots are named AI Mercenary, AI Marauder, ... and can be watched too.

Loading a saved game: one LOAD GAME button

Since 3 Oct 2026 the Ultimate menu has one LOAD GAME button (last in the left column; the left column is ACADEMY, DARK COLONY, COUNCIL WARS, OZI MISSIONS, LOAD GAME, the right column ONLINE WAR, REPLAY ONLINE GAME, CUSTOM NET WAR, ENCYCLOPEDIA, QUIT). Its screen lists the saves of every campaign together, newest first - date, time, the name you gave the save and the campaign: Academy, Dark Colony, Council wars or Ozi missions (a multiplayer game saved in battle says Multiplayer) - and LOAD resumes the chosen one in its own campaign. The save files stay where the game writes them: save\ (ACADEMY and DARK COLONY), esave\ (COUNCIL WARS) and ozisave\ (OZI MISSIONS). The battlefield save dialog (F11) is unchanged.

Are the patched executables safe? Build them yourself

Dark Colony Ultimate.exe and Dark Colony Map Editor.exe - built by the installer on your PC, not shipped in the repository since 5 Oct 2026 - are the original 1997/98 binaries with a handful of byte patches (no CD check, 1024x768, cursor fix, 150 % default game speed, the dark console-style battlefield interface, no intro movie at start-up - DARK COLONY and COUNCIL WARS play their own intro instead, ...). The patched Classic Dark Colony.exe was deprecated on 1 Oct 2026 and removed from the installer on 5 Oct 2026 (the untouched original dc16.exe stays in the repository): Dark Colony Ultimate.exe plays the whole Dark Colony campaign (DARK COLONY / ACADEMY in its main menu, LOAD GAME lists their saves with the others') with every fix, so the separate Classic executable is not needed; the installer knows two executables, Dark Colony Ultimate and the map editor (the Python tools in Dark-Colony-Server still patch dc16.exe by hand). A hand-modified exe cannot be signed and some antivirus heuristics dislike it, so the whole modification is made transparent and reproducible by one file, patcher/Apply-DarkColonyPatches.ps1 (in the repository root until 5 Oct 2026):

  • it is a plain PowerShell script; open it in any text editor and read it. It needs nothing but Windows itself (Windows PowerShell 5.1 or PowerShell 7) - no Python, no downloads, no external tools, no network access
  • every fix is a list of byte edits written out as data: file offset, old bytes, new bytes and the reason for the change, with a paragraph explaining what the fix does and where it is documented
  • it never modifies the input file; it writes a new file. A byte is written only if the original still holds the documented old bytes at that offset
  • with every fix selected at 1024x768 with the dark interface the result is byte-identical to the generator's reference build (SHA-256 165b609a… for Dark Colony Ultimate, de8076dc… for the map editor), and the script tells you so by comparing the SHA-256 (until 5 Oct 2026 those two files were committed here)
  • the screen resolution is chosen once, explicitly - the first page of the window (nothing is preselected; 640x480 (original) is the game as it shipped) or -Resolution on the command line, which is required for the games. Everything the size changes is one fix per size (resolution: screen mode, the INTRF_HD path strings and the clock hand; until 1 Oct 2026 three fixes that only worked together), and applying it writes the INTRF_HD interface set for that size into the game folder
  • the battlefield interface is chosen with the resolution, also explicitly (two radio buttons, none preselected; -Theme light|dark on the command line, required at an HD size): light (classic) = the original brushed-metal HUD, dialogs and clock dial, from the shipped metal frame INTRF_HD/<WxH>/INTRFACE_LIGHT.GIF and the stock banks; dark = the console style of the menus drawn on 28-30 Sep 2026 (INTRFACE.GIF, the INTRF_HD banks, the console dialog layouts) plus the one-edit fix console that points the exe at the redrawn clock dial SPRITES/CLOCK.SPR. Not asked at 640x480, where the game keeps its own interface. The committed executables are the dark 1024x768 build
  • since 2 Oct 2026 every resolution's interface set lives in its own folder - HD_0768P (1024x768), HD_0720P, HD_0800P, HD_1024P, HD_1080P, HD_1200P, UW_1080P / UW_1440P for the ultra-wide sizes (8 characters: the exe's path strings are rewritten in place, hd_1080p/bintro; the Council Wars copies in exp/, dc/, ozi_ns/ follow). The repository ships only the patcher's inputs in HD_SRC/ (the four pictures per size, the console banks); every HD_<height>P/ folder is written by the installer (the 1024x768 set was committed from 2 to 5 Oct 2026). A patcher run deletes every other resolution's folder (and the pre-October INTRF_HD/, and the 640x480 copies when building an HD size) before it writes, so no file of another size is left anywhere - a HUD script of one size can no longer sit under the frame of another (the "interface elements are not in place" report).
  • it checks that the resources each fix needs are next to the output (the shipped pictures in HD_SRC/<WxH>/, the _HD sprites, AVI/DCINTRO.AVI / DCAENDING.AVI / DCHENDING.AVI for the Classic movies, the ozi_ns/ overlay and exp/animozi.dat for OZI MISSIONS). A fix whose resources are missing, or which depends on such a fix, is shown as [RESOURCES NOT FOUND]: its checkbox cannot be ticked, "Select all" skips it, and -All on the command line skips it with a message. An exe patched into a folder without those files would fail at start-up or draw the menus into a corner, which would look like a bug of the patch. Every fix lists its files (-List -Detail); -IgnoreMissingData overrides the check from the command line

How to use it (plain-text walkthrough for beginners: PATCH_HOWTO.TXT): double-click INSTALL.CMD in the repository root. It is a short, commented starter that runs patcher\Apply-DarkColonyPatches.ps1 with Windows PowerShell 5.1 and -ExecutionPolicy Bypass for that one run (Windows' own Run with PowerShell obeys the execution policy, which refuses a script from a downloaded ZIP or, on many PCs, every script; no setting of the PC is changed). Windows may warn once that the file comes from the internet: More info -> Run anyway, or Run. An installer opens - Welcome -> Options -> Dark Colony Ultimate -> Dark Colony Map Editor (-> Dark Colony, only when asked for) -> Ready to patch -> Finished, with < Back / Next > / Cancel. The welcome page lists the three originals it found in the folder above patcher/ (DC - Council wars/ENGEXP16.EXE, Dark Colony - Map editor/maped.exe, DC - Council wars/dc16.exe), offers the desktop shortcuts (ticked) and has the checkbox "Install the game first, from my original Dark Colony and Council Wars discs" (ticked by itself when no game folder is found beside the installer - the ModDB package on its own): it adds a Game discs page as step 1 - the Council Wars disc, the Dark Colony disc (each a disc image .iso / .bin / .cue or the drive of a mounted image or real CD; the .bin is read directly) and the install folder ("Dark Colony" in Documents by default) - whose Next > checks the discs and takes ENGEXP16.EXE and maped.exe from them; Patch then copies the whole game from the two discs (about 480 MB, 2263 files - which file comes from which disc is tools/disc_manifest.json in the server repository, built by tools/discs.py from the two CD images; the Council Wars disc holds the expansion and the Classic data it shares, the Dark Colony disc the missions, encyclopedia, cursors, briefings, Classic movies and the map editor), rips the soundtrack (both CDs are mixed-mode discs with the music as audio tracks 2-5: from a .bin / .cue image or a real CD the eight tracks are ripped and encoded to MP3 at 192 kbit/s with Windows' own encoder into MUSIC/ and exp/music/, so fix music has its files; an .iso holds the data track only), adds the patcher's own files and builds the executables there. Not on the discs: the 1998 dc16.exe of the deprecated build. The options page has the screen resolution in a drop-down (640x480 (original), 1024x768 (4:3), ... 3840x1080 (32:9), the sizes with your monitor's aspect ratio marked recommended for your screen), under it the battlefield interface (Light (classic) / Dark, live at the HD sizes) and under it the checkbox Also patch the deprecated Dark Colony - nothing preselected: Next > stays disabled until the size and, at an HD size, the interface are chosen, once, for both games (they share INTRF_HD); the Dark Colony page exists only while its box is ticked. Each executable page has "Patch " (ticked), the original with its own Browse button, the chosen resolution and interface, the fix checklist with Select all fixes and the description of the highlighted fix; the Ready to patch page sums up what will be written (files, fixes, interface set, shortcuts, skipped executables) before anything is. An original that is missing, already patched, changed or no Dark Colony exe at all puts a big red box on its page (and a red banner on the welcome page) with what was found and what is expected, Select the correct file..., Download from our repository (opens the file's GitHub page; the script downloads nothing) and where the original disc has it (EXPENG\ENGEXP16.EXE on the Council Wars CD, DC\MAPED.EXE on the Dark Colony CD; the Dark Colony CD's DC16.EXE is the August 1997 build, the fixes need the January 1998 update from the repository); that executable stays unpatched until the right file is chosen. So the options once, Next > through the pages and Patch once writes Dark Colony Ultimate.exe and Dark Colony Map Editor.exe (and Dark Colony.exe if you asked for it) beside the originals, and a shortcut of the same name to each on the desktop, starting in its game folder. Inspect an exe tells you which fixes any executable carries. Without the starter, from a PowerShell prompt in the repository folder:

powershell -ExecutionPolicy Bypass -File .\patcher\Apply-DarkColonyPatches.ps1

Command line, for the record (the same options work through the starter, e.g. INSTALL.CMD -List): -All -Resolution 1024x768 -Theme dark [-DesktopShortcut] (Dark Colony Ultimate and the map editor, like the window), -Original <exe> -All -Resolution <WxH> -Theme light|dark, -Original <exe> -Resolution 640x480 -Patches nocd, -List -Detail (every single byte edit), -Verify <exe>, and the disc install -InstallDir <folder> -CouncilWarsDisc <image or drive> -DarkColonyDisc <image or drive> -All -Resolution <WxH> -Theme light|dark (the game from the two discs into the folder, then Dark Colony Ultimate and the map editor built there); -Resolution is required for the games and -Theme at an HD size (no defaults), relative paths are taken from the current folder. The installer package for ModDB is built by tools/make_installer_zip.py in the server repository (INSTALL.CMD + PATCH_HOWTO.TXT + patcher/, about 60 MB zipped, every file checked against the repository's index).

The fixes, in the order the script applies them: no CD (nocd: the 2025 bypass of the two menu tests - and, in Council Wars, of a third test that threw the player out of a running game - plus, since 18 Sep 2026, the removal of the whole CD path: the bypass alone only ignored the answer of the CD test, the game still read the drive letter from HBNFUFL.A01/.A02, opened D:\dc\anim.dat and ran a write test there at start-up, at every menu screen and in game, fell back to D:\dc\<file> for missing files and asked to "insert the CD", and it never asks Windows to fail such accesses quietly, so a not-ready drive D: - a card reader or USB/optical drive without a medium, a sleeping second hard disk - showed Windows' "No Disk" box behind the full-screen game or stalled it; now the HBNFUFL/CD-path block is jumped over, the probe and every CD fallback are disabled and the "insert the CD" message is replaced; the patched exes no longer need the HBNFUFL files), the display fix for the chosen resolution (resolution - one fix per size since 1 Oct 2026: the screen-mode sweep of 9 Sep 2026, the 30 INTRF_HD path strings of 14 Sep that make the exe read the rebuilt files from INTRF_HD/ so the stock files stay usable by the original exe, and the day/night clock hand re-anchored to the rebuilt HUD, 13 Sep; not applied at 640x480), the dark battlefield interface (console, 28-30 Sep 2026, a choice since 1 Oct 2026: the console-style HUD, dialogs and clock dial of the menus' visual language - data written with the interface set plus one 14-byte edit, the dial bank name sprites/cloc -> sprites/clock; left out for the light, classic interface), Windows pointer stays hidden (10 Sep), local memory pool 32 MiB (10 Sep), default game speed 150 % (speed, 10 Sep 2026; dropped 21 Sep, back since 1 Oct 2026 - the GAME SPEED slider of the battlefield options still changes it at any time, multiplayer speed comes from the relay), two-monitor start-up hang fixed (13 Sep), for Dark Colony only the Classic movies under their own names (15 Sep; Dark Colony.exe plays AVI/DCINTRO.AVI and the campaign lists in INTRF_HD/ name DCAENDING.AVI / DCHENDING.AVI, because Council Wars' own INTRO/AENDING/HENDING.AVI sit in the same folder) and the WAV files read from the game root, not exp/ (sounds, 19 Sep; the Classic exe's sound loader still carried the expansion's exp/ prefix, harmless while Classic had its own folder, but in the shared folder it played the Council Wars briefings for Classic missions 1-8 and the Council Wars water sound), the main menu's opening order (menuorder, 28 Sep 2026: the DC logo first, then the DARK COLONY title, then the button wave top to bottom, then the credits - the original ran the button wave first and drew the logo and title after it), the battlefield chat (chat, 28 Sep 2026: six chat lines on the map view instead of two, and every line that arrives plays the sound the single-player mission messages use, SOUND\MSG.WAV), no save in a network battle (netsave, 3 Oct 2026: the Game Option tab shows no Save Game cell and F11 opens nothing while a network game runs - such a save never rejoined the relay game, loading it resumed a solo game against frozen opponents), a frame limiter (fps, 3 Oct 2026: the end of every frame waits until 16 ms have passed since the previous one - the original was paced only by the DirectDraw flip's wait for the monitor's vertical blank, so under Wine, where the flip returns at once, the battlefield scrolled and the cursor animated six times too fast, and a monitor above 60 Hz has the same problem in proportion; on a 60 Hz Windows monitor nothing changes), the battlefield pointer animation at the menus' pace (pointer, 3 Oct 2026: the in-battle cursor advanced its animation every frame, twice as often as the menus, which step it only every 33 ms; now the battle does the same - an independent fix, leave it out to keep the original pace), and for Council Wars only the OZI MISSIONS menu mode (10 Sep; its data also carries, since 2 Oct 2026, the tracer bullets: the human trooper and the Lieutenant fire a visible yellow streak - the stock table named a projectile sprite that no animation bank defines - and the Gray trooper keeps its glowing bolt at every weapon upgrade level instead of losing it after the first one, the Gray commander's pistol fires that bolt too; data only, in sync with unpatched players). The third build the script knows is the map editor: Dark Colony - Map editor\maped.exe -> Dark Colony Map Editor.exe (until 25 Sep 2026 maped_ozi_ns_v1.2.exe) with fourteen fixes (15 Sep 2026: block sets, team colour and allies, Healer row, close box; 1 Oct 2026: AI type and slots, Campaign type, MED files and Super Gen, Block Type menu, City State and Troop Attributes dialogs, Leutenants, artifacts, Lights, Trigger tool, Flag tool), all dialog- and menu-resource bytes, no code. The last fix of all three builds is the high-resolution icon (icon, 25 Sep 2026): the images of DC - Council wars/DC_HD.ICO (16 to 256 pixels) in a new .dcicon section appended to the exe, whose resource directory also keeps pointing at the exe's own resources; the games' group gets id 101 as well, which their window asks for, so the taskbar shows it too; since 27 Sep 2026 the same section also carries, for the two games, an application manifest that declares them DPI-aware, so Windows shows the full-screen picture 1:1 instead of scaling it by the desktop's display scaling (at 150 % the 1920x1080 / 1920x1200 picture had been enlarged and cut off; the map editor gets no manifest) - per-monitor DPI-aware since 28 Sep 2026: the first, system-DPI-aware form was still bitmap-scaled by Windows whenever the mode switch changed the monitor's scale step (1024x768, 1280x720 and 1280x800 drop a 150 % desktop to 100 %), which showed those modes as a two-thirds picture in the top-left corner. The display fix writes the INTRF_HD interface set for the chosen size and interface itself, from the stock files and the four shipped pictures per size (INTRG.GIF, BACKDROP.GIF, the dark HUD frame INTRFACE.GIF and the metal frame INTRFACE_LIGHT.GIF; INTRO.GIF, the Classic menu's dress that no screen of Dark Colony Ultimate reaches, shipped too until 5 Oct 2026 - since then the stock picture is letterboxed like every other screen). The script itself is generated from the Python patch tools in Dark-Colony-Server (tools/gen_apply_script.py), so it always matches the committed executables.

The purpose of this repository is to make this old game better by some assembly tweaks:

  1. (DONE) increase screen resolution from 640x480 to 1024x768 - both the former DC - Council wars/Dark Colony.exe (called DC - Classic/dc16.exe until 15 Sep 2026; deprecated 1 Oct 2026, not built by the installer since 5 Oct 2026) and DC - Council wars/Dark Colony Ultimate.exe (the patched expansion executable; called DCEXP16.EXE from 10 to 15 Sep 2026, ENGEXP16.EXE before that - the untouched original keeps that CD name now) in this repository are patched, together with their interface data; everything is in Dark-Colony-Server docs/DC16_DISPLAY_AND_RESOLUTION.md (going straight to 1024x768; 800x600 is not a power of two and would need real multiplies)
    • the battlefield is 28x23 tiles = 896x736, 2.9x the stock view area; the HUD keeps its native pixel size on the right and bottom edges (INTRFACE.GIF and MAINE rebuilt by hud_layout.py)
    • the 30 menu screens, the loading screens and the briefing-globe markers are letterboxed by pad_background.py; the 44 code-positioned menu elements follow in the exe
    • the main menu (bintroe) is painted full-frame at 1024x768 by paint_intro.py (starfield and Mars limb re-rendered from the stock picture's measured geometry, richer surface, same palette; the code-positioned credits box follows via two patcher fixups); the title is re-set with a bevelled, brushed surface by logo_art.py, the DC mark is the original art on black - doc section 10.11
    • movies are stretched across the full width at 16:9 through a rerouted frame path, which also removes the stock player's skipped scanlines
    • the exe patch is 165 byte-checked edits per binary (patch_resolution.py); the stock executables are in the git history (last stock commit 0307feb) and verify tells the two apart
    • (14 Sep 2026) the 1024x768 data no longer replaces the stock files: everything that differs from 0307feb moved, under its stock name, into INTRF_HD/ (split_hd_data.py), the stock 640x480 files are back in INTRFACE/ and GAMESTAT/, the re-baked logo animations are SPRITES/DCSS_HD.SPR / DCUK_HD.SPR / DCUT_HD.SPR with ANIMATE/*_HD.FIN, and the patched exes open intrf_hd/... for exactly those 30 paths (patch_hd_paths.py, doc section 10.17). The original exes and the patched ones run side by side from one folder
    • not covered: the map editor (the unrelated dc16.exe build that shipped in the Council Wars folder was removed from the repository on 10 Sep 2026, together with the Ghidra project; both are in the git history before that commit)
  2. (DONE) remove the CD check to play campaign
    • (DONE 10 Sep 2026) the Windows pointer no longer flickers over the game cursor (arrow on the loading screen, block on the menu and in battle): patch_cursor.py, 4 code sites + 7 relocation entries per exe, both repository exes patched - doc section 10.12
  3. (TODO) increase quality of movies
  4. (DONE) tweak multiplayer to be modern and online: see project Dark-Colony-Server. Dark Colony Ultimate (MULTI PLAYER WAR) is the same network program as Dark Colony; since the patcher of 25 Sep 2026 the two also simulate identically, so they can share a battle (not yet tried in a real game). Older Ultimate builds and the untouched ENGEXP16.EXE go out of sync when a Gray commander rallies his troops.
  5. (DONE) fix original map editor
  6. etc.

Greatest thing I would like to do:

  1. (TODO) create third race from artifacts (there are enough of them to do that)
  2. (TODO) maps are always randomly generated according to pattern rules you set
  3. (TODO) map of whole Mars planet is interactive and contains huge amount of battles with AI or online players

Feel free to contact me and provide info, code or patches.

Official fan site: www.darkcolony.pl (I am not an admin of this site! Mentioning it for the newcomers.)

About

Dark Colony - real time strategy released in 1997

Resources

Stars

12 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages