Skip to content

Latest commit

 

History

3,619 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rock Band 3 (Wii) — AI-Assisted Fork

⚠️ Unofficial fork. This repository is not the canonical RB3 decomp. It is a personal experiment by @freeqaz exploring how far AI agents can push a clean-room Wii decompilation project. Code, commits, decisions, tooling, and most of the documentation in this fork are AI-assisted (primarily via Claude Code). Do not assume anything here represents the views, code quality bar, or roadmap of the upstream maintainers.

The community RB3 decomp this fork started from lives at DarkRTA/rb3. If you want to contribute to or follow the canonical effort, please go there instead. This fork has diverged in goals and methodology and is not aimed at upstreaming back.

No game assets, no Wii assembly, and no copyrighted binaries are stored in this repo. An existing copy of the game is required to do anything useful with it.

A decompilation of Rock Band 3 for the Nintendo Wii (Build 100901_A, target binary SZBE69_B8), with an in-progress native engine rewrite to follow. Sister project to Dance Central 3 (AI-assisted fork) — same author, same methodology, shared Milo engine codebase.

Status

Headline numbers track cross-platform code — the engine, game, and third-party libraries that would actually need to run in a native port. The Wii SDK (main/sdk/) and Wii-specific singletons are excluded because they get replaced or stubbed in a desktop port anyway.

  • Cross-platform fuzzy match: ~79% (~61% byte-exact, ~78% of functions matched, ~10.3 MiB of code in scope)
  • Overall (with Wii SDK included): ~73% fuzzy, ~56% byte-exact
  • Build: ninja produces a matching main.dol for everything decompiled so far; the rest is filled in from the original binary
  • Native port: not started; tracked under docs/SYNC_WITH_DC3.md Tier 3

Project relationship

Two-project series (same author, same toolchain):

DC3 RB3 (this repo)
Platform Xbox 360 (PowerPC Xenon) Wii (PowerPC Gekko/Broadway)
Compiler MSVC for Xbox 360 (ICF, debug) MetroWorks CodeWarrior 4.3
Symbols None — Ghidra inferred Full DWARF in debug ELF
Cross-platform fuzzy match¹ ~93% ~79%
Native port Linux WebGPU + WASM (working) Not started
Ghidra MCP port 8000 8001

¹ Excludes platform SDK (Xbox 360 XDK in DC3, Wii RVL_SDK / MSL / DWC / NW4R in RB3) and platform-specific singletons. These get replaced or stubbed in a native port and don't reflect work-toward-playable progress.

DC3 was step one — the AI decomp methodology was built and proven there on the harder target (no DWARF, ICF, link-time pragmas). RB3 is step two: same methodology, easier target, and DC3's already-decompiled Milo engine code serves as ground truth for the ~50% of source the two projects share.

AI-assisted decomp

Tooling that travels between DC3 and RB3:

  • Orchestrator MCP — task queue, build/diff integration, persistent results database (mcp__orchestrator__* tools)
  • Ghidra MCP — DWARF-rich pseudo-C decompilation served on ghidra.local:8001
  • m2c — asm → C decompiler at ../m2c/m2c.py
  • Source permuter — randomized rewrite + match% scoring
  • Slash commands/analyze-function, /compare-asm, /stack-layout, /dc3-pair, /ghidra-decompile, /permute, /progress, /refactor-staff, /struct-check, /pcode-inspect
  • Persistent agent memory~/.claude/projects/.../memory/ carries patterns, feedback, and project context across sessions

RB3-specific:

  • scripts/dc3_compare.py — finds shared Milo engine functions DC3 has decompiled to 100% that RB3 is still missing, ranked by portability
  • MWCC pattern catalogdocs/decomp/patterns/INDEX.md documents register allocation, bool materialization, pragma tricks, and STL inlining quirks specific to MetroWorks CodeWarrior

For the agent context and full workflow, see CLAUDE.md. For the cross-project sync plan, see docs/SYNC_WITH_DC3.md.

Dependencies

Windows

  • Install Python and add it to %PATH% (also available from the Windows Store).
  • Download ninja and add it to %PATH% (or pip install ninja).
  • (Optional) Run Add-Exclusion.ps1 (right-click → "Run with PowerShell") to avoid degraded performance from Windows Defender scans.

macOS

  • Install ninja: brew install ninja
  • Install wine-crossover:
    brew install --cask --no-quarantine gcenx/wine/wine-crossover

After OS upgrades, if macOS complains about Wine Crossover.app being unverified:

sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app'

Linux

  • Install ninja.
  • For non-x86_64 platforms: install wine from your package manager.
  • For x86_64: wibo, a minimal 32-bit Windows binary wrapper, will be downloaded automatically.

Building

git clone https://github.com/freeqaz/rb3.git

Using Dolphin Emulator, extract your game to orig/SZBE69_B8:

Configure and build:

python3 configure.py
ninja

Diffing

After the initial build, an objdiff.json exists in the project root. Download a release from encounter/objdiff. Under Project → Settings, set Project directory to this repo. The configuration loads automatically. Selecting an object from the left sidebar starts diffing; changes to source files, headers, configure.py, splits.txt, or symbols.txt trigger automatic rebuilds.

License

This fork's own contributions are released under CC0 1.0 Universal — public domain, no attribution required. That matches the DC3 sister project.

A single root license cannot honestly describe a decomp tree, so NOTICE records what CC0 does and does not cover — read it before reusing code. In short:

  • CC0 covers this fork's own contributions — scripts/, docs/ and native/, plus this fork's work in tools/ and src/.
  • Upstream DarkRTA/rb3 is unlicensed; its contributors keep their rights and CC0 does not speak for them. doc/ (no s) is entirely theirs — note the one-character difference from docs/, which is ours.
  • Third-party code is vendored throughout, under its own licenses, two of them copyleft — SoundTouch (LGPL v2.1) and the GNU getopt files in Speex. Those are not available under CC0.
  • Nothing here claims any right in Rock Band 3 itself, which belongs to Harmonix Music Systems and MTV Games.

Acknowledgments

  • DarkRTA/rb3 — the original decompilation project this fork started from. The base symbol map, splits, and large amounts of early decomp work came from there and from the wider milohax community.
  • decomp-toolkit, objdiff, and m2c — the foundational third-party tools every PowerPC decomp project depends on.
  • DC3 decomp — sister project where the AI-assisted methodology was first developed.

About

AI-assisted fork of MiloHax's Rock Band 3 decomp.

Topics

Resources

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages