Like I said, the main feature is that the loader should not modify the executable on disk so that the patcher doesn't complain and also in case Dark Ages tries to be funny with hash checks on itself someday (doubtful). That and it's just more programatically elegant. I also wanted something that could work with various file versions just in case I needed to use a previous client version.
Thus, DALoader was born as you can see below:
Download Link (MegaUpload) ~ 91.1 KB (7.26 & 7.27 profiles included)
Requires .NET 3.5 Runtime (pre-installed in Windows 7)
Now, I had originally posted this over at PlanetDA, mostly because I figured people were looking for a multiple instance tool that worked with 7.27. It was soon removed due to the "no wall" part making it a hack tool and possibly giving players an unfair advantage over others. While I can see the rationale to a point, this is not the first tool to do so and furthermore not the first tool hosted/advertised on PlanetDA to do so. What is even funnier to me is that while this tool requires you to close the "no walled" DA instance and run it again with walls, several other tools allow it changed at runtime and (at one time) hosted on PDA quite recently. So somehow, my "test feature" hack is not allowed while other very convenient and single-purpose tools are.
I'll just say, you use what you use at your own risk and you be the judge. You've been warned, even though no one is going to know you're doing it anyways. Just for emphasis, you can not toggle the "no walls" portion at runtime (though that may become a feature if needed with the map editor integration later).
I'm pretty sure the usage of this program is straightforward. You select where your DA executable is, which client version you want to use, and then what options you go. The nice part is that the profiles include file size and MD5 hashes so it will attempt to automatically chose the right client version based on your file. If this is incorrect or you want to manually set it, you can do so. Since it uses MD5 hashes, if you have modified your executable, this feature more than likely will not work in detecting the version.
The settings are saved so when you open the program it should be just like when you left it. Do be sure that you extract the profiles directory to the application path. If you don't (or don't have any profiles) you won't be able to use it as it has no idea where to apply the changes.
So how does it work? The program creates a suspended process of DA. That means it loads the process into memory and is immediately frozen indefinitely. The changes are then made in memory and the program is resumed, of course this all happens in a matter of milliseconds. Since the changes are made in memory and not on the actual file itself, your DA executable is left untouched. Each client version has a profile which lists where each change should be made in memory so that it doesn't have to be hard-coded for a single version in the program itself.
Anyhow, feel free to report any bugs or possible suggestions! Do keep in mind that this project was intended to be a quick utility to serve a small but important purpose so I am quite reluctant to add any more functionality to it.
P.S. For the curious, the profile XML files refer to the address in process memory, in decimal (base 10). If you plan on making your own profiles, be sure to use the process address (file address + 0x400000).
