Halo CE (for original Xbox) Decompilation Research Project

Overview

Halo Decompilation Project

The goal of this project is to study and re-implement the original Xbox launch title Halo: Combat Evolved.

Disclaimer: This project is intended only for educational and research purposes and is not indended to promote piracy or violation of any copyright laws. This repository does not include original executables or any game assets. You will need to provide these files from your own copy of the game. Buy a copy. Heck, buy two!

Motivation: Fans of Halo CE will be empowered to customize and enjoy this incredible classic in new ways, to understand the mechanics behind the game, and eventually port the game to run natively on more platforms. Moreover, this game serves as an exciting vehicle to drive advancements in decompilation research and tooling.

Methodology: Pieces of the game are slowly being re-implemented in C/C++ source code. These pieces are then compiled and patched into the original executable, such that the re-implemented pieces are used over their original implementation counterparts. This approach fosters incremental development, testing, and debugging, and accelerates the timeline for those who are interested in making game modifications.

Current State

  • Able to patch and run existing game
  • Main loop of the game is re-implemented
  • Several more functions are implemented
  • Long way to go...

Build

  • Prepare halo-patched directory with disc files and original executable
  • Install deps: clang, llvm toolchain, python3
  • Install Python deps: pip install -r requirements.txt
  • Have extract-xiso in your path
  • python build.py
  • Run halo-patched.iso in xemu, or on your Xbox. You'll want to set up a debug environment.

Help

No support is provided at this time. Please do not ask for files, tools, etc.

Reversing

Interested in reversing the game? PRs are welcome!

The process of adding re-implemented functions is mostly automated and relatively painless:

  • Add new function/data declarations to kb.json as they are discovered and confirmed. The definitions in kb.json are used to automatically generate header files and link the new implementation with the original XBE.
  • Implement new functions in the appropriate source file src/halo/**/*.c.
  • When build.py is run, it will automatically pick up the new source files, build them, and patch the XBE with redirects from the original implementation to the re-implementation.
  • Naturally, your new code will call some function in the original binary that has not yet been re-implemented. These functions will also be automatically linked correctly, provided the definitions of data and called functions are in kb.json.
You might also like...

"Jira Search Helper" is a project to search more detail view and support highlight than original jira search

Jira Search Helper What is Jira Search Helper? "Jira Search Helper" is a project to search more detail view and support highlight than original jira s

Dec 23, 2022

Awesome TV is the First and Original streaming entertainment network for Global Africa from United States of America (USA).

Awesome TV is the First and Original streaming entertainment network for Global Africa from United States of America (USA).

LEADBOARD APP Awesome TV is the First and Original streaming entertainment network for Global Africa from United States of America (USA). Built With H

Apr 4, 2022

Implementation of original Lisp as described in Paul Graham's article "The Roots of Lisp". In Typescript

Roots of Lisp This is the implementation of original Lisp from 1960 as described in Paul Graham's article How to use Building If you just want to run

Oct 28, 2022

The original SSB feed format, for ssb-db2

ssb-classic This module is a plugin for ssb-db2 which implements the classic SSB feed format. You can use this module as an ssb-db2 plugin, or you can

Jun 18, 2022

The project is a To-Do list project to help plan daily, weekly or monthly activity. I used Html, CSS and JavaScript Technology to execute the project.

HEAD To Do List This project is geared towards applying acguired skills for development of my porfolio through the following practices: Create

Dec 19, 2022

Leader Board is a simple project based on JavaScript programing language. The purpose of this project is to work with APIs and ASYNC & AWAIT methods. I have used vanilla JavaScript with web pack to implement this project

Leader Board is a simple project based on JavaScript programing language. The purpose of this project is to work with APIs and ASYNC & AWAIT methods. I have used vanilla JavaScript with web pack to implement this project

Leader Board - JavaScript Project Table of contents Overview The challenge Screenshot Links Project Setup commands My process Built with What I learne

Oct 21, 2022

Simple NextJS Project Template to write less boilerplate code when starting a new Next JS Project

Simple NextJS Project Template to write less boilerplate code when starting a new Next JS Project

Feb 12, 2022

The ManageYourCompany 📈 project is a project that creates, deletes, updates companies, units and assets.

The ManageYourCompany 📈 project is a project that creates, deletes, updates companies, units and assets. The rule is that every company has several units and the units have several assets, these assets are machines with several fields: Name, status, person in charge, image, among others... This is a project in order to exercise my Backend skills with NodeJs and front with react.

Feb 9, 2022
Comments
  • Add datum_handle_t and other common base types

    Add datum_handle_t and other common base types

    This PR moves vector3_t up a bit in preparation for other structs to be added later. The datum_handle_t type is actually referred to as a datum index by Bungie, but it makes more sense to be a handle with value composed of an index and salt instead. Booleans have been converted to defines because constant propagation doesn't appear to happen on Windows builds (under my environment at least). NONE is also a common reference used throughout the code-base, not to be confused by the NONE flag/enum value which is usually/always? 0 instead of -1.

    opened by Ernegien 0
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
La extensión web que muestra el precio de los juegos de la web de Xbox, PlayStation, Nintendo y Epic Games Store con los impuestos de Argentina incluidos. Conocé cuanto vas a pagar por tus juegos 💚💙❤️

Conocido anteriormente como Xboxito Impuestito - Conocé el precio real de los juegos Impuestito calcula y muestra el precio de los juegos de la web de

Luke ✨ 23 Dec 4, 2022
Sample apps showing how to build music and video apps for Xbox using a WebView.

description languages name page_type products urlFragment Sample showing how to build music and video apps using primarily web technologies for Xbox.

Microsoft 11 Dec 14, 2022
Repository for machine learning research.

Machine-Learning A simple project created with django containing links and a chatbot to demonstrate how Choice Coin can be used for eLearning #how to

Choice Coin 17 Oct 21, 2022
Block Library Primitives by Pew Research Center

A starting point for anyone looking to add functionality, extra control to and or create your own custom block library using core/blocks. Built with easier extensibility in mind

Pew Research Center 8 Nov 5, 2022
Beautiful and easily customizable themes for Roam Research.

Roam Studio Beautiful and easily customizable themes for Roam Research. More themes coming soon! If you want to support my work Become a GitHub Sponso

Alexander Rink 26 Dec 31, 2022
A curated list of projects, research initiatives, videoconferences and articles on artificial intelligence (AI) in Chile.

Artificial Intelligence Chile A curated list of projects, research initiatives, videoconferences and articles on artificial intelligence (AI) in Chile

Juan Francisco 12 Nov 2, 2022
For NUS PhD Students and Staffs, just one click to open the research papers on Google Scholar/IEEE/ACM, etc. with this script.

NUS Literature Quick Access For National University of Singapore's students and staffs, just with one single click you can open any paper without the

Naibo Wang 9 Nov 30, 2022