In the past few months we created an application which can decompile 16bit real mode applications to C. As a result we can produce C code from the Dune2 binary. Together with a DOS emulation layer, we can create a working Dune2. This will be our initial version.
From this version we will slowly grow to a cross-platform, real C application. Of course it will take a lot of time to get there, but we have that time.
Currently, we have a big problem with the overlays used in Dune2, which doesn’t allow us to create a static version of Dune2 (we do have a working version when we attach a JIT). Till this problem is solved, we won’t release any source. We of course hope to solve this problem soon, but it is pretty complex.
If you have any questions, suggestions, ideas, please post them here or in the appropriate subforum. Your opinion counts, so don’t be shy.
Update:
Today I fixed most of the overlay problems. So, as promised, I hereby give the first teaser.
It is far from perfect, but I just wanted to share the Westwood logo showing up, and the Virgin logo showing up. If you click twice (yes, twice, as I said, far from perfect
), you will see the menu. If you are lucky you can hit Exit too, but most likely the application aborted before that. Don’t worry, most of those problems are due to the fact you did something the application doesn’t know how to handle yet in static form.
Please don’t send me bug reports about this binary: I already know about them
Oh, and don’t press any keys :p
It also segfaults from time to time due to stack overflow. Just so you know. This happens because it waits for the timer to tick, and sadly enough on most modern CPUs your C-stack runs out before that is happening. I am fixing those when I find them.
That said, I also only publish the linux-only binaries for now. This is due to the fact I haven’t gotten there yet to port it to Windows
(which is relative easy, but you need to do it).
In conclusion, on request, I also added the source files. Yes, the source is ugly. Yes, it is 2500 files long. This will all change in the feature (optimization-stages), but I now took the most raw form I could create, to make sure there were no errors on that level. So be patient, and you will see the source becomes more and more readable over time
After days of hard labour, finding nasty bugs and problem, we finally finished the second (and most likely the last) teaser. It contains the full intro, and most other things are sometimes working. It still crashes a lot (with a nice crash report), we know, please don’t report those bugs (we know about them). If you receive any other error, please let us know ASAP.
Also we are happy to announce we got the Windows version working. It turned out Windows and DLLs are a bad combination for projects like this. In result we just static compiled our ‘libemu’ into the binary, and now everything works.
Also GCC has a nice tail-call optimization, which solved many stack-overflow.
Besides this teaser, we also uploaded all our source the SVN. See our homepage how to get your copy and how to start working with it. If you want to contribute, please drop by on IRC, and we will help you on your way.
Either way, the files: