Skip to content
daid edited this page Jul 1, 2020 · 15 revisions

Welcome to the BadBoy wiki!

What is this?

BadBoy is a Gameboy Emulator + Disassembler. It provides a powerful set of tooling to assist in reverse engineering Gameboy games.

It consists of 2 major parts:

  1. A gameboy emulator
  2. The disassembler

Why?

While disassemblers for the Gameboy exist they are limited in functionality. And generally work as a single pass full disassembler, leaving most of the reverse engineering effort in the hands of the user after that. BadBoy is designed to keep assisting you during the whole reverse engineering effort.

BadBoy uses a different method. It differs in a few major ways:

  1. It can use detailed information from the emulator to provide more information
  2. It makes almost no assumptions. If it does not know if something is code or data, it handles it as data. Instructions are parsed for jumps/calls to find as much code as possible.
  3. It allows "repeated disassembly", reading back in previously disassembled source with annotations to generate a new disassembly.

Process

Alt text

custom_mark10 digraph G { ROM [shape=folder]; Emulator; InstrumentationData [shape=folder]; Disassembler; Disassembly [shape=folder]; Assembler; NewROM [shape=folder]; SymbolFile [shape=folder];
ROM -> Emulator -> InstrumentationData -> Disassembler -> Disassembly -> Assembler -> NewROM;
ROM -> Disassembler;
Assembler -> SymbolFile -> Disassembler;
Disassembly -> Disassembler [label="Annotations"];

} custom_mark10

Clone this wiki locally