Modified version of DosBox to run Blood
This is a modified version of DosBox v0.74 called BloodBox, that will serve as the platform for a reverse engineering effort of the classic first person shooter Blood. Specifically version 1.21 (The GOG version should work) After loading the main executable of the game, BloodBox injects calls to a special interrupt at the start of certain functions. These functions were then reverse engineered and implemented in BloodBox itself. In this way, instead of having to reverse engineer the entire game, only code useful for speeding up, bug fixing, modding and adding features will have to be considered.
- Merging BloodBox and Blood memory: Instead of allocating the emulated system memory, BloodBox stores all of it in the BSS segment defined in "boxmem.asm". This file is generated by "genboxmem.cpp", which adds labels to the memory offsets of variables in "BLOOD.EXE". In this way, Blood's variables are now also variables in BloodBox and can be accessed directly by the reverse engineered code. This does of course mean that BloodBox will only work on little endian systems.
- Code in BloodBox and Blood can call one another. The special interrupt mentioned above allows "BLOOD.EXE" to call the reverse engineered functions in BloodBox, but BloodBox also supports the reverse. See "src/dosbox.cpp" and "src/blood/blood.cpp".
Changes made to the original DosBox source files are all marked with "NOTE: BloodBox"
The main BloodBox stuff is located in "src/blood/"
In order to compile and run:
- Compile and run "src/dosboxmem.cpp", this program is not part of the main build process yet and must be compiled manually before hand. Make sure the file generated by this program is put in "src/" alongside "dosbox.cpp".
- Compile BloodBox itself
- Place "dos32a.exe", "bloodbox.conf" ("stuff/") and the BloodBox executable with "BLOOD.EXE" in the game's main directoy. (This is the correct case for case sensitive filesystems) Note that BloodBox checks at startup if the right version of "dos32a.exe" and "BLOOD.EXE" are present and won't run without them.
- Run BloodBox. Note that as with the original DosBox, the game sometimes fails to start due to it not being able to detect certain hardware. Hopefuly this will be fixed in the future.