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
View our progress and answers to frequently asked questions on the project tracking website.
Join the discussion on the BFBB Decompilation Discord.
- 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
andmwldeppc.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 Decompilation Discord and DM either
Seil#3565
ormp#8248
for access.
- 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 Decompilation Discord and DM either
- 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.
- This is usually named
- Copy your clean DOL of Battle for Bikini Bottom to the base working directory and rename it
baserom.dol
. - Create a
2.0
and2.7
folder intools/mwcc_compiler
. - Copy the CW 2.0
mwcceppc.exe
andmwldeppc.exe
into the2.0
folder. - Copy the CW 2.7
mwcceppc.exe
andmwldeppc.exe
into the2.7
folder. - Run the
make
command.
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 and PRs are welcome.
We recommend joining the BFBB Decompilation Discord as most of our discussion about this project occurs there. It's also the best place to get help if you need it.
@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.