Forums / Games / Classic Halo Games

How to run Halo PC on GNU/Linux

OP Benijam7

This is the (unofficial) tutorial on how to run Halo: Combat Evolved on the beloved GNU/Linux family of operating systems.

The concept is simple. Actually doing it can be challenging. Extremely challenging.

Here's what you need:
  • A legit copy of Halo: Combat Evolved and its product key
  • Linux based OS
  • WINE
  • winetricks
  • At least 1.5GB of space
  • The ability to use the command line and/or follow directions
PART I: Setting up WINE
WINE has quite the sinister reputation of not working. Fortunately, Halo runs with ease. Unfortunately, it doesn't run "out of the box."
Also, do not under any circumstances run wine or anything related to wine as root

First, open a terminal. You will use this terminal for the duration of the tutorial. If you open a different terminal and begin executing commands listed here, it will not work!

If you already have WINE and winetricks installed, go to the next step.

In order to install WINE (for a debian based OS (ubuntu, mint, etc.), type this into your terminal:
sudo apt-get install wine winetricks
You will need to create a new directory in your home folder called 'wine-prefixes'. This is where we will create the wine prefix that we will install Halo in. NOTE: WINE doesn't work well with 64-bit operating systems. We will make a 32-bit prefix to solve that problem.
mkdir ~/wine-prefixes && cd ~/wine-prefixes
Once we have the directory, we need to setup the environment variables that tell WINE how to function. (Note: if you're showing off and created a 'halo' folder inside wine-prefixes, delete it please.)
export WINEPREFIX=~/wine-prefixes/halo && export WINEARCH=win32
Now, we are ready to initialize WINE.
wineboot && cd ~/wine-prefixes/halo/
You'll know if it worked if the halo directory was created and that directory contains a drive_c directory.

Before we continue, there is a bug that does not allow Halo to render in-game text. If you enjoy chatting in multiplayer, I suggest you pay attention. We need to install an additional file. It won't fit in this post, so I have moved it into the following post. Please complete that before continuing!

PART II: Installing Halo
Before we begin, Halo needs a missing DLL file to install correctly. Getting it is quite simple:
winetricks mfc42
(I was surprised by the German text as well)
If you don't do this, Halo will complain by screaming "could not load pidgen.dll"

Hopefully, you know how to insert a disk into a computer. Anyway, we need to get to the location of your install file. If you are using a disk, we need to get to the mount point. Usually, it is /media/{your username}/HALO
For example:
cd /media/anotherlocust/HALO
Inside that lovely folder resides Setup.Exe (no idea why the 'E' is capitalized). We need to run it.
wine Setup.Exe
Simply follow the instructions, and it should work. If it doesn't, feel free to post your issue. (The install wizard will hold your hand, don't worry!)

Now that we have Halo installed, we will need to make sure it runs...

PART III: Running Halo
If you followed my instructions and used the same terminal, run this command:
cd $WINEPREFIX/drive_c/Program\ Files/Microsoft\ Games/Halo/
If not, you should have read the instructions!
Inside this folder rests halo.exe, the M$ executable file. We'll use wine to execute it.
wine halo.exe -window
Notice that I've instructed you to run it in windowed mode. Please run it in windowed mode! If you don't, it will screw up your resolution! Just do it!

If it works, you are ready to move on to part 4. If not, you'll need to restart before complaining.
rm -Rf ~/wine-prefixes/halo
PART V: Post installation work
You may be wondering, how do I play halo without typing a ton of commands? Easy: make a shell script to do it for you. You'll need wget to download it. You should already have it, but just to be safe:
sudo apt-get install wget
Now, we have to download it:
wget && chmod a+x
In order to launch it easily, we need to move it into a folder on the $PATH environment variable. Just for simplicity, we'll use /usr/bin/. I don't like doing this, but there is a 99% chance that will be on $PATH.
sudo cp /usr/bin/halo
Notice how I named it 'halo' instead of ''

To express my limited understanding of bash, this script will allow you to pass arguments to halo. For example:
halo -r -console -vidmode 1080,1080,75 -window
This will launch halo with the developer console enabled and force it to run in a window.

You will also need to patch halo in order to run it without the disk. It's simple: my script does it for you!
halo -u
If you're running mint or ubuntu (not sure if the others work), we can create a desktop file to create an application for halo. Once again, we'll download it with wget:
wget && sudo cp halo.desktop /usr/share/applications/
You'll probably want the picture I made as well:
wget && sudo mkdir /usr/lib/halo && sudo cp icon.png /usr/lib/halo/
Once your display manager loads the file, run it. It will launch Halo in windowed mode with the developer console enabled. You can change that by editing '/usr/share/applications/halo.desktop' Google how to edit desktop files. Note: that desktop file can launch Halo: Custom Edition if you happen to have that installed. If you don't, nothing will happen when you select that option. (it will still run vanilla Halo though!)

And with that, you will be able to enjoy Halo: Combat Evolved on Linux.
Fixing the missing in-game text.

Well, I made a big deal about this being complicated when it really isn't. I assumed that since the Microsoft XML Parser Service Pack 6 was relatively new, that it would require the installation of the Microsoft .NET framework. It didn't.

First, setup our wine prefix if you aren't using the same terminal.
export WINEPREFIX=~/wine-prefixes/halo && export WINEARCH=win32
Now, we use winetricks to easily install that xml parser:
winetricks msxml6
The installer launches a wizard, so follow the instructions. For some reason, Microsoft demands that you enter your organization name. (A space is a valid response!)

When it installs correctly, continue with the tutorial.

And now for the second installment of this thread: Halo: Custom Edition. If you enjoy creating content for Halo PC, I suggest you read on.
Things to keep in mind
  • Never EVER run WINE as root
  • Follow my instructions if you don't know how to use a terminal
  • Always use the SAME terminal
  • Don't be a show off and skip ahead.
  • Be patient with WINE
What you'll need
  • A valid installation of Halo: Combat Evolved
  • Your valid product key
  • WINE
  • At least 2.5 gigabytes of free space
  • A stable internet connection
  • wget
Now that we've got that out of the way, it is time to begin installing the custom edition.

I would have you repeat the last tutorial, but we need to do a few different things here. Open a terminal. You will use this terminal for the duration of the tutorial. If you decide to use a different one, it won't work.

Let us setup WINE...
export WINEPREFIX=~/wine-prefixes/halo && export WINEARCH=win32 && wineboot
When that is finished, we will gather our required files to install Halo: Custom Edition. Make sure that you have your valid product key handy. You'll need it.

We're going to download the exe files needed to install Halo: Custom Edition and the Halo Editing Kit. Because the file is hosted on halomaps, I am reluctant to use wget for it. Because of this, you'll download it from here and save it to ~/Downloads. When that download has finished, we will download the Halo Editing Kit to save some time. Get it from here and save it to ~/Downloads as well.

Now that we have all our files, we are ready to install Halo: Custom Edition

I trust that you download the installer file to ~/Downloads. If not, save yourself some pain and move it to your Downloads folder. The downloaded file should be called halocesetup_en_1.00.exe. Let's get to the file and run it.
cd ~/Downloads && wine halocesetup*.exe
Once again, have your valid product key that came with Halo PC handy because that's the first thing that the install wizard will ask for. When the wizard finishes and the game is installed, exit setup. Don't launch it, because it will probably mess up your resolution.

Before Halo: Custom Edition can launch, we will need to patch it. There are 2 ways of doing this. You can run haloupdate.exe, or you can download the patch from halomaps. For safety, we'll download it directory with wget:
wget && wine haloce-patch-1.0.10.exe
Once that finishes (it may take a while), we will be able to run Halo: Custom Edition.

Now we need to test it to make sure it runs. You must launch the halo executable in the directory where it is installed. If not, it will crash.
cd $WINEPREFIX/drive_c/Program\ Files/Microsoft\ Games/Halo\ Custom\ Edition/ && wine haloce.exe -window -console
Notice how I launched it in window mode, developer mode, and console mode. The argument style is the same as if it was ran on Windows. You can use wine haloce.exe -? to get a list of all possible arguments.

If it runs and doesn't crash, you are in luck. If not, please reply to this thread with the command output. I'll also need your OS name/version, and your WINE version.

Without the editing kit, Halo: Custom Edition isn't that useful for the experienced modder. If you want to create mods, you'll need this. If not, carry on!

Earlier, we download a second exe file. That file, normally named HEKSetup_1[1].00.exe is the installer for the editing kit. I'm not confident that the one you downloaded is the same as the one I listed, so we'll use regular expressions to run it.
cd ~/Downloads && wine HEKSetup*.exe
. Follow the on-screen instructions, and the editing kit will be installed. If it doesn't work, reply to the thread with the command output, OS name+version, and wine version.

It is important to verify that all the tools bundled with the editing kit work. Unfortunately, if you're planning on building maps, you're out of luck. tool.exe depends on DOS style paths, and WINE doesn't translate the UNIX style paths at run-time. There is currently no fix for this. As for everything else, let's get to work!
cd $WINEPREFIX/drive_c/Program\ Files/Microsoft\ Games/Halo\ Custom\ Edition
We are now in the directory where the installer put all our executables. First, we'll test guerrilla:
wine guerrilla.exe
Play around with it if it runs. If not, then you may want to do some research.
Sapien is next:
wine sapien.exe
Make sure to open the 'tutorial' map. It should be in tags/levels/test/tutorial/tutorial.bsp. It should run out of the box.

You may be wondering how to export models from 3ds max. If you managed to get it working on WINE and can afford to buy a $5000 program, then you deserve a pat on the back. As for anyone else, I do not support 3ds max and therefore will not provide assistance for exporting your models. Sorry about that!

Once all the tools that I listed work, then you are ready to start modding. It's a shame that you can't really test or use the mods that you make.

Additional Details
I mentioned in the Halo PC tutorial that the shell script I provided can launch Halo: Custom Edition. It's simple:
halo -c -window
Remember: always run Halo in windowed mode so that you don't screw up your resolution. You can also run it with the desktop file by right clicking and choosing 'Halo: Custom Edition.' Enjoy the freedom of modding!

One more thing...
Over time, experienced modders at halomaps created an extended API for modders called Open Sauce. If you want to use mods with pretty shaders, follow the tutorial in the next post.
When I run the haloupdate.exe it says that it can't find my halo directory and when I ran that halo patch it says that I don't have halo installed.
You are a legend, this tutorial is brilliant!
You have to run it in windowed mode, but running it with [-vidmode width,height,refresh] works great. Eg: [wine haloce.exe -window -vidmode 1920,1080,60] runs it really well, you can't even tell it's windowed.
All I need now is the campaign for Halo CE and I'm set. Should be pretty straighforward, just follow the instructions from except using the wine prefix.
Thanks again!
Thank you soo much the best halo fan of this site!
Thank you for the details tutorial! I know that a number of people will find this incredibly helpful!