2010-01-26:

Syndicate Wars Port - a reverse-engineering tale

reverse engineering:re:assembler:games:gamedev:x86:asm:windows:linux:macosx:c:syndicate wars
Syndicate Wars is a game published in 1996, created by Bullfrog. The game was written in C (Watcom) for the DOS4GW DOS extender. And of course it has stopped working natively (i.e. without emulators like DOSBox) when the modern operating systems, like GNU/Linux or Windows NT series, emerged. A few years ago my friend, Unavowed, told me about proposition of a project to create a port of Sydicate Word for modern OS'es like the two previous one I've mentioned. The port was to be done by decompiling the original executable file, locating all the functions from the standard C library, locating the DOS4GW and I/O (sound, keyboard, gfx, mouse, etc) dependencies, replacing them with modern native libc function call and libSDL/OpenAL libraries (sometimes using simple wrappers, other times by creating converters), and finally, recompiling it all to form native executables for the modern systems. Yesterday, we've (it was Unavowed who was the clear leader of this project) finished this project, and we've published executables, not only for GNU/Linux and Windows, but also for Mac OSX :)

Link to the project site (you can find there some screenshots, videos, and Syndicate Wars Port itself):
http://swars.vexillium.org/

And now, for some images/videos:

GNU Screenshot 1GNU Screenshot 2Mac OS Screenshot 1



Any comments are welcomed :)
As for the technical side of the project, I'll describe everything in the next post (update: added a link to the next post).

Comments:

2010-01-27 03:40:36 = grable
{
Great work!

I was thinking of trying this game in the latest dosbox again to see if it was any faster than last time, now i dont have to :-)

Oh and btw, do you have any plans of updating the 3d renderer? eg opengl or whatnot.
im sure it would be a massive undertaking so dont fret if not ;)
}
2010-01-27 22:45:18 = Unavowed
{
grable:
Thanks ;-) Unfortunately we have no plans for developing the port much further. Most of the code is still in assembler, and it would take a lot of effort to analyse the renderer code and data structures before we could provide OpenGL replacements.
}
2010-01-28 02:22:22 = Gynvael Coldwind
{
@grable
Thanks :)
}
2010-02-22 08:34:56 = Oz
{
Wikkid :)
One of my favourite games now playable again. Thanks.
}
2010-02-22 16:12:32 = Gynvael Coldwind
{
@Oz
:))
}
2010-03-07 18:36:33 = Eurocorp
{
Really really superb effort guys! I can now play this on Windows Vista no problem :D

The install didn't work when sound was selected so I unselected it ... and I still get sound (minus the cd music) when I play!

This might be old but its fun - time to blow up some banks :P

Thanks again, you put a smile on my face!
}
2010-09-14 21:34:37 = Csimbi
{
Wow. Hats off.
Can't wait for a fully OpenGL game...
}
2016-07-06 10:49:38 = andwan0
{
Big thanks to you awesome guys for doing this!

Reading from the description, it sounds like this can be done to "any" DOS game?

Also, is it possible to get the networking code working? (even if it's IPX, can still get it working... then use IPXWrapper to UDP etc)
}

Add a comment:

Nick:
URL (optional):
Math captcha: 1 ∗ 7 + 10 =