joeyballentine / bfbb

Decompilation project for SpongeBob SquarePants: Battle for Bikini Bottom

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SpongeBob SquarePants: Battle for Bikini Bottom

OK chat on Discord

This repo contains a WIP decompilation of SpongeBob SquarePants: Battle for Bikini Bottom (US) for Nintendo GameCube.

It builds the following DOL:

main.dol: sha1: 306526d90b48e99894c3138f5fc8f2716d9fecf6

Join us on the BFBB Modding Discord under #decomp-discussion

Progress

View our progress and answers to frequently asked questions on the project tracking website.

Building

Requirements

  • devkitPro
    • During installation, only the 'GameCube Development' component is required.
  • Python3 (pacman -S msys/python3)
  • gcc (pacman -S gcc)
  • Metrowerks CodeWarrior 2.0 and 2.7 compiler and linker for Embedded PowerPC (mwcceppc.exe and mwldeppc.exe)
    • These can be installed with CodeWarrior 2.0 and 2.7 for GameCube. Please obtain access to these tools on your own, or if you are interested in contributing, please join the BFBB Modding Discord and DM either Seil#3565 or mp#8248 for access.
  • A clean DOL of Battle for Bikini Bottom
    • This is usually named main.dol (or something similar) and must be extracted from the GameCube disc for the game. See this guide for instructions.

Instructions

  1. Copy your clean DOL of Battle for Bikini Bottom to the base working directory and rename it baserom.dol.
  2. Create a 2.0 and 2.7 folder in tools/mwcc_compiler.
  3. Copy the CW 2.0 mwcceppc.exe and mwldeppc.exe into the 2.0 folder.
  4. Copy the CW 2.7 mwcceppc.exe and mwldeppc.exe into the 2.7 folder.
  5. Run the make command.

Project Structure

bfbb
├── .github/workflows: build script for the website and CI
├── .vscode: settings and tasks for VS Code
├── asm: disassembled source code and linker code
│   ├── CodeWarrior: Metrowerks Standard Library and C/C++ Runtime
│   ├── Core: asm for src/Core
│   ├── Game: asm for src/Game
│   ├── ODEGdev: Debugger SDK
│   ├── bink: Bink SDK
│   ├── dolphin: Dolphin SDK
│   └── rwsdk: RenderWare SDK
├── docs: useful decompilation guides
├── dwarf: C++ definitions generated from the PS2 BFBB executable
├── include: global include headers
│   ├── CodeWarrior: C/C++ standard library
│   ├── dolphin: Dolphin SDK
│   ├── inline: utility inline asm macros
│   └── rwsdk: RenderWare SDK
├── src: decompiled C/C++ source code for BFBB
│   ├── Core: core game engine code
│   │   ├── p2: platform-specific code
│   │   └── x: game engine code
│   └── Game: game-specific code
├── tools: helper scripts and tools
│   ├── inlineasm: inserts raw assembly into C++ source code
│   ├── mwcc_compiler: Metrowerks compiler and linker
└   └── symbol_ripper: converts a mangled symbol name into a C++ function

Contributions

Contributions and PRs are welcome.

Special Thanks

@Seil - Starting the project, working on tools, decompilation, support, etc. (too many things to list).

@mattbruv - Creating the project tracking website, inlineasm, decompilation.

@DarkRTA - Exporting datatypes for Ghidra, creating the formatting rules, splitting data files, improving the build process, decompilation.

@stravant - writing documentation, decompilation.

@mkst (conker) - Continuous Integration.

And to everyone else who has contributed to the project in any way.

About

Decompilation project for SpongeBob SquarePants: Battle for Bikini Bottom


Languages

Language:Assembly 65.8%Language:C++ 33.1%Language:C 0.9%Language:Python 0.2%Language:Makefile 0.1%Language:Objective-C 0.0%Language:Dockerfile 0.0%Language:Shell 0.0%