This wiki is a fork of the Slippi-wiki meant to assist developers interested in learning about and contributing to the Brawlback codebase.
What this document is:
- An overview of the various components that make up the Brawlback Project.
- A collection of resources and tools.
What this document is not :
- An in-depth programming tutorial.
The Brawlback project is comprised of a number of different applications, each with their own purpose. Below is an overview of each of these applications function, and their relevant technologies.
Dolphin - A modified version of the Dolphin emulator. This project is responsible for handling things like: communication with the matchmaking server, passing external data to the emulated game, and playing replays.
Languages: C++
Brawlback SSBB ASM - A series of ASM mods that are applied to Brawl in order make Brawlback work.
Languages: PPC Assembly, C++
The user launches Dolphin and selects an .iso of Brawl to emulate. Upon lauching the emulation of Brawl, Dolphin injects the modifications made by Brawlback ASM as placed on an SD card. As the user interacts with the game, information is exchanged between Dolphin and the Brawlback SSBB ASM code. As a user begins an online match, Dolphin starts a log of in-game state reported by Brawlback ASM.
"Where is the rollback code located?"
Rollback is accomplished by work done between the Brawlback ASM code and the Dolphin code.
"How is data moved between the game (assembly) and the emulator?"
Via EXI communication. An example of such is demonstrated in this video by Fizzi.
When will BrawlBack be ready for a public release?
When it passes the quality control gates. AKA: when it's ready.
What will the UI look like? Are you going to reuse Brawl's matchmaking UI?
Unknown at the moment. The current plan is to reutilize as much of the UI as possible.
- SSBB Modding Wiki - Created by fudgepop01, a wiki for all things Brawl modding!
- Custom Brawl Modding Discord - A Discord where you can get all your questions answered about Brawl modding.
- MKWii's Go From Noob to Veteran ASM Coder Guide Repo - A bunch of useful guides to learning ASM and related concepts, not necessarily PPC or Melee specific.
- Fizzi Teaches Basic Assembly and Melee Modding (video) - Recorded by the creator of Slippi, this video teaches some basic assembly and demonstrates EXI communication.
- fudgepop01's Git Guide on Setting Up Fracture's Framework for C++ Codes Development - GitHub reference for how to setup Fracture's C++ Injection Framework.
- fudgepop01 Shows How to Setup Environment for Brawl Modding in Fracture's C++ Framework (video) - Recorded by fudgepop01, this video teachs you how to setup your environment for C++ development
- Intro to Wii Game Modding by InternetExplorer (video) - Recorded by Dan Salvato - A playlist of videos related to modding Wii games. An excellent resource for debugging with Dolphin.
- Assembler Tutorial - A wii modding specific guide to PPC, and its instructions.
- PowerPC Instruction Set - Indepth documentation about PowerPC instructions and their behavior.
- PowerPC Instruction Set Reference Card - An overview of various PowerPC instructions and their behavior.
- W3Schools C++ Tutorial - A quick overview of the basic C++ programming standard intended for preexisting developers.
- CPPReference - The complete C++ and C languages standard reference.
- GGPO Article on Rollback - An article from GGPO on how rollback functions specific to emulators.
- Rollback Pseudocode - Some pseudocode used to show the basics of rollback.
- GDC Talk on Rollback in MK and Injustice 2 (video) - A talk Netherrealm Games (Mortal Kombat, Injustice) gave on rollback.
- Rollback in INVERSUS - A great blog post from the developer of the game INVERSUS on implementing rollback and the different challenges within.
- Fightin' Words Rollback In-depth Guide - Another great blog post on the intricacies of rollback.
- Slippi's Wiki - Slippi's wiki
- Slippi's Main GitHub - Slippi's main repo
- Slippi Community Discord - Slippi's Discord to ask questions about development
- GCT RealMate Code Editor - A useful extension for syntax highlighting in VSCode related to Brawl modding
- HxD - A free Hex editor. Hex editors in general are useful for looking through memory dumps.
- SpeedCrunch - A calculator for programmers. It allows for quick conversions and operations between hex, binary, octal, and decimal.
- Ghidra - A tool originally created by the NSA - it's used for reverse engineering programs. Particularly useful, is its ability to generate C code from assembly.
- Dolphin Memory Engine - A RAM search program designed to search, track, and edit the emulated memory of the Dolphin emulator during runtime.
- CodeWrite - Convert PPC ASM code to/from C2 codes.
- VSDSync - A collection of utilities and scripts to automate updating your virtual SD card.
- GCTRealMate - An application to generate cheats for Brawl based on provided ASM in txt files.