Skip to content
Snowy edited this page Mar 12, 2023 · 3 revisions

Frequently Asked Questions

What is Demon?

Demon is a free (as in freedom) reimplementation of the game executable for the Windows demo version of Halo: Combat Evolved as released by Gearbox.

Demon works by patching functions in the game to redirect to functions in the library. This allows you to use it with an unmodified Halo Trial halo.exe, only having to replace strings.dll (which contains Demon). The goal of the project is to eventually replace all functions from the executable, allowing Demon to run as a standalone executable that can use Halo: CE assets.

Please note that this is not a reimplementation of the game, itself, as the actual game data such as levels is stored in the maps. Demon merely provides an alternative means to play these levels (using free - again, as in freedom - software), and these are not included in the project. To get the full Halo game, you will need to have the full Halo game. See more information in What files do I need to use demon?.

Does Demon contain code copyrighted by Microsoft?

No. There is no original Halo: Combat Evolved source code in Demon.

All code in Demon is handwritten using information derived via reverse engineering as well as prior experience with modding the game. Demon is 100% free software as defined by the Free Software Foundation.

Why does this project exist?

One main reason is for educational and research purposes. In order to mod the game and create good quality tools to create content, we need to understand it better. The official tools are not well-documented and have strange issues and quirks that may not be very intuitive, such as dubious error messages and the lack of proper error checking. The Invader project serves to fulfill this need, but one can only go so far without thoroughly analyzing the actual engine.

Another reason is to allow people to create a more "definitive" version of the game than what can be officially obtained. There is also not a single version of the game that has all of the following at once: online multiplayer, custom servers, custom maps, the ability to use any name you want, co-op, split screen, as well as the original classic CE graphics. Each version only has a subset of these features and not everything.

For example, Halo Custom Edition has online MP, custom servers, custom maps, and a lot of freedom for your names, but it's missing co-op, split screen, and the original graphics. On the other hand, MCC has online MP, co-op, and the classic graphics, but you only get split screen on the console version, where only custom maps are available on the Windows version.

As you can see, there is still no true definitive version of the game that gives you the best of everything. Each version also has issues on its own, such as CEA having collision issues due to having to support the anniversary ("Remastered") graphics, or Halo Custom Edition lacking full controller support in multiplayer due to its limited netcode.

What files do I need to use Demon?

To get up and running, you only need files that came with the demo version released on Windows (known as Halo Trial) as the installer contains all necessary files to use Demon.

That said, if you only use the files that came with the demo version, then you will only have access to one multiplayer level ("Blood Gulch") and also one campaign level ("The Silent Cartographer"), just like what originally came with the PC and Mac demos.

To play the full game, you will need all of the original maps which came with the paid version of the game, and they will need to be ported to the demo map format. You can port them with Invader without much effort.

Why the PC demo? Why not ____?

There are a few versions of Halo: Combat Evolved that were considered for this project:

  • Retail disc version
  • Custom Edition
  • Xbox

They all have one thing in common: getting everything needed to run the game is a hassle one way or another.

The full PC version has CD-key based DRM for installation, running, and even updating which requires installing it normally. Installing it normally also installs SafeDisc, a copy protection program notorious for having many security holes and exploits that can put installations of Windows at risk. Halo Custom Edition, the more popular version, also has further downgrades such as the removal of the "CAMPAIGN" button and the introduction of "fast shaders" (downgraded shaders for faster speed).

Then there is the Xbox version which is the most difficult version to set up and debug on PC, being that the premier emulator requires access to significantly harder-to-obtain content such as ROMs from an original Xbox.

Getting the demo version of the PC version is easy and carries none of these drawbacks. Being what is essentially a shareware release of the game, it contains no DRM. Also, since it is (approximately) based on the 1.01 version of Halo PC, it hasn't been touched very much compared to other versions of the PC port, meaning fewer things were broken by developers since the original Xbox release than other versions of the game. It also hasn't been updated, thus the files that come with the installer are all that are needed to work on Demon.

This makes it easy to ask for help on getting all needed files without having to worry about being called out for piracy, as is unfortunately prevalent in other reverse engineering projects.

Can I contribute?

For most people, yes! We recommend Ghidra to do your reverse engineering. We also use Cheat Engine to help with finding values and figuring out how they work. All of these tools are free software as defined by the Free Software Foundation just like Demon.

We want our code to be 100% free and well-documented. Note that if you submit code to this project's upstream, you will need permission to release it under our license: the GNU General Public License version 3 as published by the Free Software Foundation.

If you have access (or previously had access) to original Halo: Combat Evolved source code, you are not allowed to submit any of it without permission from Microsoft, as it is copyrighted. It is also likely you signed an NDA on this code, so you may get into legal trouble if you violate it. This may mean that you cannot contribute much code, if at all.

Note that bug testers are always welcome, too!