https://github.com/banjo360/bk360
Decompilation research of Banjo-Kazooie for the xbox 360
https://github.com/banjo360/bk360
banjo-kazooie decompilation xbox-360
Last synced: 4 months ago
JSON representation
Decompilation research of Banjo-Kazooie for the xbox 360
- Host: GitHub
- URL: https://github.com/banjo360/bk360
- Owner: banjo360
- License: mit
- Created: 2023-07-15T15:23:25.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-09-15T22:02:12.000Z (9 months ago)
- Last Synced: 2025-10-11T19:38:10.448Z (9 months ago)
- Topics: banjo-kazooie, decompilation, xbox-360
- Language: C
- Homepage:
- Size: 1.37 MB
- Stars: 13
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- awesome-game-decompilations - Banjo-Kazooie (X360)
- awesome-game-file-format-reversing - bk360 (decomp) - Matching decompilation of Banjo-Kazooie (Xbox 360). (Game & Studio Tools / Rare)
README
# Banjo-Kazooie XBLA decompilation project
A research project to decompile the XBLA version of Banjo-Kazooie with help from (looking at the code of) the [N64 decompilation project](https://gitlab.com/banjo.decomp/banjo-kazooie).
Some code, like enumerations or structure definitions, are taken from the N64 project.
## Requirements
* [split360](https://github.com/banjo360/split360) and [coff-linker](https://github.com/banjo360/coff-linker) in the PATH.
* Visual Studio 2005 SP1 installed.
* XBOX 360 SDK installed (I'm using 7645).
* Editing `tools/vs2005.bat` to change `XEDK` to the correct path.
* Python
* GCC for PowerPC (e.g. `powerpc64-linux-gnu-*`). Need to edit `tools/matcher.py` if different.
* WINE installed if building on linux.
* Editing `Makefile` to remove the call to WINE if building on Windows (untested).
Optional: you can add [dump-diff](https://github.com/banjo360/dump-diff) to your PATH if you want to print the non-matching differences.
## Usage
You need to have an uncrypted `default.xex` from Banjo-Kazooie (sha1: `24f81f8058d1be416d95ccfcb5ebd2503eb4fd47`) at the root of the project.
Look at the `Makefile` to see what you can do. But basically, you do `make split` the first time (and each time you edit `bk.yaml`), then just `make` to regenerate `merged.xex`.
### Objdiff
There is [objdiff](https://github.com/encounter/objdiff) support. You just need to `make objdiff` to generate `objdiff.json`.
⚠️ *Since the code is compiled with MSVC but checked against code assembled by GCC, relocations (i.e. function calls) will show as different*
## Current state
Copying functions from the Ghidra pseudo-code or from the N64 decompilation project and see if they match.