Skip to content
PORTSNATIVE.
HomeCatalog
Web GamesEmulatorsToolsNews
PORTSNATIVE.

A catalog for discovering ports and related projects. We link to official sources and do not host original game files.

ExploreCatalogMy list
InformationAbout usSuggest a portSupportDonationsLegal notice
© 2026 PortsNative
Back to catalog
Halo: Combat Evolved (halo-ce-universal, bnunu)
PORTSNATIVE

Halo: Combat Evolved (halo-ce-universal, bnunu)

NATIVE PORTSHOOTER / ACTIONANDROIDWINDOWSLINUXBETA

Halo: Combat Evolved (halo-ce-universal, bnunu)

Halo: Combat Evolved

TechnologyNative C/C++ port (engine reimplementation)

Available forAndroid, Windows, Linux

View official project

About the project

Halo: Combat Evolved, comúnmente conocido como Halo, Halo CE o Halo 1, es un videojuego de disparos en primera persona desarrollado por Bungie Studios y publicado por Microsoft Game Studios el 15 de noviembre de 2001, a manera de título debut de la videoconsola Xbox, y de la cual es considerado como su aplicación asesina. Es el primer juego de la franquicia Halo.

12 versions of Halo: Combat Evolved

You're viewing: Halo: Combat Evolved (halo-ce-universal, bnunu)

Halo: Combat Evolved (halo-ce-universal, bnunu)github.com/bnunu/halo-ce-universal
Android
Windows
Linux
Current
Halo 1 Decompgithub.com/cybersecurity/halo-ce-universal
Android
›
Halo 1 Decomp Forkgithub.com/thelinkin3000/halo-ce-universal
Android
›
Halo 1 Touch Control Forkgithub.com/theLlamaNet/halo-ce-android
Android
›
Halo CE Webgithub.com/fqlx/halo-ce-universal
Web
›
Halo: Combat Evolvedgithub.com/punpckhdq/halo
Windows
›
halo ce vita (BirchWoodGod)github.com/BirchWoodGod/halo-ce-vita
Windows
›
Halo: Combat Evolved (Android)github.com/FulGerNet/halo-ce-android
Android
›
Halo: Combat Evolved (Chupathingy)github.com/ChupathingyCE/chupathingyce
Android
Windows
Linux
macOS
›
Halo: Combat Evolved (iOS/macOS)github.com/chrissotraidis/projectreach
iOS
macOS
›
Halo: Combat Evolved Universalgithub.com/OpenCommunityEdition/OpenCE
Windows
Linux
Android
›
OpenCE (Halo: Combat Evolved)github.com/OpenCommunityEdition/OpenCE
Windows
Linux
Android
Web
›

Official project information

Author's original READMEOpen on GitHub ↗

Halo: Combat Evolved for Linux, Windows and Android

Join our Discord

This project is a port of the Halo: Combat Evolved decompilation to Linux, Windows and Android. The decompilation is of the Xbox build 2342 (cachebeta.exe, SHA-256 4cc87b45f721270392a96f1674ed2b5cd4a7bb4355faeab4531d1cf1884d9520).

<img width="1289" height="995" alt="The game on Linux" src="https://github.com/user-attachments/assets/0d3ad50f-f8b8-46cf-aef8-e3661da2a7d7" />

The port starts from the decompilation of bnunu/halo-1. That project is a fork of punpckhdq/halo.

Download

GitHub Actions builds the game for each commit. These links download the builds of the latest release:

PlatformReleaseDebug
Linuxhalo-linux-release.ziphalo-linux-debug.zip
Windowshalo-windows-release.ziphalo-windows-debug.zip
Androidhalo-android-release.ziphalo-android-debug.zip

Use the release build to play. The debug build stops at the first failed assertion and writes it to the log. Use the debug build to find and report problems.

The game updates itself. At start-up it looks for a newer release, and asks if you want to install it. Refer to "Updates" in port/linux/README.md.

Each build of the main branch that passes on all three platforms is a new release. The Releases page keeps the last five releases. If the latest build has a problem, get an older build from that page.

Game data

The port does not include the game data. Download an Xbox disc image (.xiso or .iso) of Halo: Combat Evolved. All versions of the game operate. The maps of the European (PAL) version were made for a slower console. The port changes them to play as the North American (NTSC) maps do, so players of the two versions can play together.

  1. Start the game.
  2. At the first start, the game asks for the disc image. Select it.
  3. The game extracts the maps/ folder. Then the game starts.

On Linux and Windows, the game puts maps/ next to the executable. On Android, copy the disc image to the phone first. The app puts maps/ in its data folder. Refer to port/android/README.md.

Platforms

Each platform has its own instructions:

PlatformInstructions
Linux (32-bit x86 executable, OpenGL 4.5, SDL3)port/linux/README.md
Windows (32-bit x86 executable, OpenGL 4.5, SDL3)port/windows/README.md
Android (arm64 app, OpenGL ES 3, SDL3)port/android/README.md

The Linux README also gives the controls, the settings and the multiplayer functions. These are almost the same on all platforms.

Multiplayer

The game can play system link games on a local network and on the internet:

  • A system link game can have up to 128 players on up to 128 machines.
  • Linux, Windows and Android machines can play in the same game.
  • An invite link lets a machine join a game on the internet. No server of this project is necessary.
  • The netcode is new. Each machine moves its own player at once, and the host makes the decisions for the game. Refer to port/linux/NETCODE.md.

Build the game

You do not need the Xbox SDK. The port supplies the SDK declarations that the game uses. Refer to port/include/xdk.

To build the game:

  1. Install Python and ninja.
  2. Install the tools for your platform. Refer to the README for the platform.
  3. In the root folder of the repository, enter python configure.py.
  4. Enter ninja with the target for the platform:
TargetResult
ninja linuxbuild/linux/halo
ninja windows (on Windows)build/windows/halo.exe and SDL3.dll
ninja android_apkport/android/app/build/outputs/apk/debug/app-debug.apk

If you enter ninja without a target, ninja builds the game for the computer that you use.

tools/ci_build.py makes the same builds as GitHub Actions. For example, enter python tools/ci_build.py linux release.

Build options

Give these options to configure.py:

OptionResult
(none)A debug build. A failed assertion stops the game.
--releaseA release build. The game does not examine assertions, as in the retail game.
--portableThe Linux and Windows builds operate on all x86-64 processors. The Linux build also operates on older distributions and on SteamOS: refer to "Portable build" in port/linux/README.md. Use this option for builds that you give to other persons.
--glesThe Linux and Windows builds show their graphics with OpenGL ES 3, not with OpenGL 4.5. Use this option for graphics hardware that has no OpenGL 4.5. Refer to "Graphics hardware without OpenGL 4.5" in port/windows/README.md.
--lto=thin, --lto=offLess link-time optimization. The link is faster.
--pgo=offNo profile-guided optimization.
--pgo=trainRecords a new optimization profile. Refer to "Optimization profiles".
--profileA profiling build. It records CPU times. Refer to "Profiling builds".

Without --portable, the Linux and Windows builds use all the instructions of the processor that builds them (-march=native). Such a build does not always start on a different computer.

Optimization profiles

The builds use profiles of the game to optimize the code:

  • pgo/halo_linux.profdata for Linux and Android.
  • pgo/halo_windows.profdata for Windows.

The profiles need clang 22 or later. With an older clang, the builds do not use the profiles.

To record a new profile:

  1. Delete the profile.
  2. Enter python configure.py --pgo=train.
  3. Enter ninja linux or ninja windows.

The build then plays the main menu and the first minute of each campaign level. This procedure continues for approximately 15 minutes. The game data must be in assets/.

Profiling builds

A profiling build records where the game spends its time.

  1. Enter python configure.py --profile, then build as usual.
  2. Start a recording. Enter profile_record in the console (or the telnet console), or set debug.profile_record = true in config.toml. To record each game of a session, also set debug.profile_record_when = "game".
  3. Stop the recording. Enter profile_stop, load another map, or quit.

The game writes numbered .part<n>.json files under profiles/ in its data root and logs their paths. Parts are retained after the recording stops. Logs go to standard error; a Windows release build without standard error writes them to halo.log next to halo.exe.

tools/net_report.py is a helper for developers. Enter python tools/net_report.py <recording.part1.json> to read a recording as tables. The command also writes <recording>.summary.txt, a short text file.

CommandResult
profile_record [seconds]Starts a recording. With a number of seconds, the recording stops after that time.
profile_stopStops the recording.

debug.profile_memory sets the memory of a recording in MB (default 256, from 4 to 1024). A recording has no length limit: the game writes a part each time the memory is full. Refer to "Settings" in port/linux/README.md.

On Android, the files are in /sdcard/Android/data/com.halo.decomp/files/profiles/. Enter adb pull to copy the recording parts to a computer.

A profiling build plays with normal builds. It does not use --pgo=train.

View official project
CALIFICACIÓN
—
Loading votes…
Advertisement

PROJECT FILE

Project type
NATIVE PORT
Genre
Shooter / Action
Status
beta
Original platform
—
Technology
Native C/C++ port (engine reimplementation)
Version
—
Updated
Oct 3, 2026

Target platforms 3

Android
Windows
Linux
View on GitHub
Advertisement