VOGONS


First post, by crt0

User metadata
Rank Newbie
Rank
Newbie

Hi everyone!
I am excited to share an alpha release of Dark Sun Online: Crimson Sands native Windows port based on SDL2.
This release includes an experimental Single-player mode for a full offline playthrough without an internet connection or servers.
The project is in alpha, so bugs are possible (and there will be some, no doubt).

The attachment dso-win.png is no longer available
The attachment dso-win-v0.6_offline.zip is no longer available

(Archive includes SDL2 and SDL2_mixer (https://libsdl.org), distributed under the zlib license. No original game data, assets or binary blobs included)

Sample video

Spoiler

Dark Sun Online SDL2 port sample video

ABOUT:
No AI was used in this project, everything was done with my own brains, hands, and experience.
That is why an old-as-time HLE approach was used: the loader loads the original game blob into memory (yes, you have to provide the original Mdark.exe v2.8 and all the game data files) and patches all platform-dependent calls to a high-level wrapper (modern winapi and SDL2).
Instead of spending years manually reversing all the thousands of game functions (including the game logic and gamescript vm interpreter), only the low-level system boundaries were located and hooked: clib/stdlib calls and file I/O, win16 dusty apis, dos interrupts, 1Mb segment access, vga segment and ports - all wrapped onto modern winapi and SDL2 abstraction.

Cons of this approach:

  • Such actions (specifically, setting RWX permissions on virtual memory segments, runtime inline hooks and patches, and subsequently executing the original game code loaded into a segment) trigger almost all antivirus software - so the port requires disabling your antivirus or adding it to exclusions, otherwise no miracle will happen.
  • The port is nailed down tight to the x86-32 architecture (which is not an issue at this stage).

Pros of this approach:

  • For those who care about this - you can be sure that the entire port, including its general architecture, was written the old-fashioned way by a meatbag. No AI slop, though... humans make mistakes too, so bugs are definitely present, as well as possibly suboptimal solutions. Still, everything in this port, from the first line to the last, was written by a human by hand and with full awareness. THUMBS UP if you get an uncanny valley feeling looking at the flood of AI-slop ports! 😀
  • The HLE code is small and optimized.
  • HLE does not interfere with the original logic. All core algorithms are original, no assumptions, guesses, or simulations. Fidelity, so to speak. Including the bugs generously scattered by the original developers. Just like in the good old days 😀
  • It does not require spending tons of time on routine work like disassembling ALL of the original game code, since it is used directly in its original form.

HOW TO PLAY:
The port requires the original files and executable from the last official release of the Dark Sun Online: Crimson Sands client (so-called version "2.8", build tag 2.0:Sep 05 1997:12:07:23).

Original hashes for vanilla v2.8 Mdark.exe:

Spoiler
MD5 c933508e291bb3ebfcc276344bdfd6ef
SHA256 d04ef090951cd2d3e51dc750f9eb024cfc57e902a6ad0f8763b89129ddc2bef7

Hashes for this v0.6 port build (dso-win.exe):

Spoiler
MD5 1fec259273b8c863ae4f0cc67dede59b
SHA256 4922ae953e3ccbfd095287a237c1c839712f535bb464b73c998c2d7a5e86c0ad

Put all the port files (dso-win.exe, SDL2.dll, SDL2_mixer.dll, the cdaudio folder) into your DSO v2.8 directory and run dso-win.exe - don't forget to add the folder to your ANTIVIRUS EXCLUSIONS beforehand or disable your antivirus while playing.

The port supports the original game's CD-Audio feature: to use it, place the ogg files named track02.ogg .. track29.ogg into the cdaudio subfolder.

Reply 1 of 2, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Oh so it's like that one old Syndicate Wars project approach. I think that did similar, just trying to chain the DOS game into a Windows environment with an API. Anyway congrats to a game rescued from TEN hell!

FUCK "AI". It is a tool of fascism. We do not need it. We do not use it.

Reply 2 of 2, by NancySadkov

User metadata
Rank Newbie
Rank
Newbie
leileilol wrote on Today, 04:14:

Oh so it's like that one old Syndicate Wars project approach. I think that did similar, just trying to chain the DOS game into a Windows environment with an API. Anyway congrats to a game rescued from TEN hell!

I personally just prompted AI to instrument dosbox-x. After that it was just a matter of running original + reversed version (initially a raw ghidra decompiler dump) and comparing their state every few cycles, while creating multiple scenarios with loadable save states (to check deeper in game code paths). That works with any game, not just 32bit x86. Once the states fully matches original, I just prompt to refactor it and port to SDL, while preserving ability to build original DOS exe. Also, SDL2 is a bit too old and klunky, so SDL3 may be a better option in 2026, but then again, moving between SDL versions is like 30 minutes of work for modern AI.