Do hardware ao jogo: Assembly para Game Boy Advance

Comece pelo indice no site: /pt/gba-assembly-01-como-o-hardware-funciona

Requisitos: GNU Binutils arm-none-eabi, Python 3 e mGBA pronto para jogar.
Os comandos abaixo devem ser executados nesta pasta, depois de extrair o ZIP.
No Windows, use WSL para a montagem e mGBA para Windows para abrir a ROM.

ACOMPANHE O CURSO EM ORDEM
1. Os capitulos 1 e 2 sao leitura e exercicios no papel; nada para executar.
2. O capitulo 3 explica instalacao, pastas no terminal e a primeira construcao.
3. Extraia o ZIP antes de construir. Confira que a pasta atual contem o .s
   escolhido, gba.ld e rom.py. Fragmentos curtos do artigo nao sao arquivos completos.
4. Execute um comando por vez. Pare no primeiro erro. Os tres primeiros podem
   funcionar sem mensagens; o ultimo mostra o tamanho e o hash da ROM.
5. Abra so o .gba final no mGBA e confira o resultado esperado no capitulo.
6. Salve uma pequena mudanca e repita os quatro comandos antes de reabrir a
   ROM. Guarde o ultimo codigo funcionando. Experiencias extras sao opcionais.

PRIMEIRA ROM (capitulo 3)
arm-none-eabi-as -mcpu=arm7tdmi -g -o primeira.o primeira-rom.s
arm-none-eabi-ld -T gba.ld -o primeira.elf primeira.o
arm-none-eabi-objcopy -O binary primeira.elf primeira.gba
python3 rom.py primeira.gba

DEMAIS EXEMPLOS (capitulos 4 a 8)
arm-none-eabi-as -mcpu=arm7tdmi -g -o main.o retangulo.s
arm-none-eabi-ld -T gba.ld -o main.elf main.o
arm-none-eabi-objcopy -O binary main.elf jogo.gba
python3 rom.py jogo.gba

Troque retangulo.s por pisca.s, botoes.s, movimento.s ou minijogo.s e repita os
quatro comandos. Cada .s e independente; nao concatene os arquivos.
Em botoes.s, A muda a cor enquanto pressionado.
Em movimento.s, o direcional move o quadrado.
Em minijogo.s, leve o quadrado ao alvo verde; Start reinicia.
Configure as teclas equivalentes no mGBA.

gba.ld e rom.py sao copias dos arquivos learn/gba.ld e tools/rom.py do projeto
de Alan Jahnel, tag v0.3.0, commit
9f03c3738fe9ccfaf2b6cc280124d09989be258a:
https://github.com/AlanHJH/gba-assembly-ai/tree/v0.3.0
Os seis arquivos .s foram criados especificamente para esta serie. A rotina
fill_rect foi adaptada da rotina homonima de learn/main.s do mesmo projeto.
O projeto original recebeu apoio de IA. A licenca de reutilizacao permanece
pendente de definicao pelo mantenedor; este pacote nao declara uma nova licenca.

Os exemplos foram executados em emulador. Teste em console fisico nao realizado.
