Skip to content
Modified version of DosBox to run Blood
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
autom4te.cache
docs
dos32a-912-src
include
src
stuff
visualc_net
AUTHORS
COPYING
ChangeLog
INSTALL
Makefile.am
Makefile.in
NEWS
README
README.md
THANKS
acinclude.m4
aclocal.m4
autogen.sh
config.guess
config.h.in
config.sub
configure
configure.in
depcomp
install-sh
missing

README.md

BloodBox

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.

Features:

  • 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.
You can’t perform that action at this time.