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 -Yoink!- 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 http://www.dropbox.com/s/mjxwjwcqvlmv696/start.sh && chmod a+x start.sh
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 start.sh /usr/bin/halo
Notice how I named it ‘halo’ instead of ‘start.sh’
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 http://www.dropbox.com/s/o2pn0lw7qz77qtp/halo.desktop && sudo cp halo.desktop /usr/share/applications/
You’ll probably want the picture I made as well:
> wget http://www.dropbox.com/s/qqk3kjjcw6uhs7x/icon.png && 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.