I'm not sure why the implementation of
Shadow Warrior in XL Engine seems to be causing controversy here - it's a source port which was added more for technical reasons than anything else at this moment - but concerning engine recreations based on reverse engineering of original executables I can tell you the following.
A while ago a team of enthusiasts
successfully reverse-engineered Dune II. The result, called
OpenDUNE, is not only an accurate recreation of the game's code - meaning that all playing mechanics are the same as in the original - but it also allowed to pinpoint and fix some of the issues in the original DOS executables (via
this unofficial patch). The code was bug-fixed and then used as a basis for a number of ports, including
Dune Dynasty.
While the release of OpenDUNE may not have been a huge event for the gaming community on the whole, it is a solid proof of concept that accurate recreation of game code from executables is possible. Of course, the work with
Dune II was somewhat simplified by the fact that this is a real mode DOS programme, but
luciusDXL's efforts are clearly in the same vein.
With
Daggerfall's source code apparently lost by Bethesda, a reverse-engineered recreation is the next best thing we can get. It's certainly better than any recreation that is based on simply observing how the game works, without checking its executable's internals.
Here's how
luciusDXL describes the intended functionality of the XL Engine project:
Quote
The XL Engine will control execution and provide services to the supported games which are run from dynamic libraries - henceforth referred to as DLLs - though they are called different things on different OSs (like plugins). The XL Engine itself will handle everything OS and hardware related, file system, input, graphics output, sound output, etc.. Initially the game DLLs will implement all of the core game code - from sound system to rendering and gameplay - but will use XL Engine services for allocating memory, playing the resulting sounds, blitting the framebuffers to the screen and so forth.
From there similar functionality will be extracted from game sets and be pushed into the engine, which will allow implementing new features, hardware support and so forth to be done in a less error prone fashion. Eventually the game DLLs will contain only the code that is unique to that game.
While previous parts of the engine were not written based on disassembly, the new release will be source port accurate and any code that does not match the original is being replaced. In fact, the game specific code is being written from scratch from the reverse engineered code. Only once the original code is working is it being refactored and common functionality pulled out to ensure that the results remain "source port accurate."
BTW, the XL Engine forums now have a section for
DOS bugs in the games supported, so that the bugs can be ironed out in the respective games' implementation in XL Engine.