← cd ../

~/labs/workshops/gba-firered/00-comece-aqui

Comece aquiVisao geral do workshop, pre-requisitos e a ordem das aulas.

Este é o material do workshop. Ele ensina, do zero, como pegar um jogo de Game Boy Advance (vamos usar Pokémon FireRed) e descobrir como ele funciona por dentro, até o ponto de alterar o comportamento do jogo com um patch próprio.

Você não precisa saber Assembly antes de começar. O material explica cada coisa na ordem em que ela aparece.

O que você vai conseguir fazer no final

  1. Entender como o GBA liga, carrega a ROM e executa o jogo.
  2. Ler instruções ARM e Thumb e saber o que cada uma faz.
  3. Importar a ROM no Ghidra e navegar pelo código do jogo.
  4. Achar um valor na memória (o HP de um Pokémon) durante a batalha.
  5. Descobrir a instrução exata que escreve esse valor.
  6. Reconstruir a estrutura de dados do Pokémon em batalha.
  7. Fechar a função no Ghidra e deixar o decompile legível com nomes e struct.
  8. Escrever, montar e instalar um patch que faz o inimigo cair em um golpe.

A ordem das aulas

Siga os capítulos nesta ordem. Cada um depende do anterior.

01-arquitetura-do-gba.md      O hardware, a CPU e o mapa de memória.
02-arm-e-thumb.md             Como ler as instruções da CPU.
03-ferramentas.md             mGBA, Ghidra, Python, GDB.
04-analise-estatica.md        Importar no Ghidra e mapear o boot até o jogo.
05-analise-dinamica.md        Achar o HP na RAM com mGBA e GDB.
06-encontrando-a-funcao.md    Fechar e limpar a função de HP no Ghidra.
07-primeiro-patch.md          Escrever e instalar o patch de dano.

O README.md na raiz do projeto tem o mapa detalhado do boot e os hashes da ROM. O RAM.md tem a caça ao HP escrita em detalhe. Os capítulos abaixo costuram tudo isso em um caminho único de aula.

Antes de começar

Você precisa de três coisas:

1. Uma dump legítima e própria de Pokémon FireRed USA 1.0.
   SHA1: 41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc
   Coloque em: rom/PokemonFireRed.gba

2. Um save de batalha pronto (.sav), para não jogar o tutorial inteiro na aula.
   Veja notes/save-prep.md.

3. As ferramentas instaladas. Veja o capítulo 03.

Não distribua ROM comercial. Cada participante usa a própria dump.