Homebrew de NES: por onde começar
Quarenta anos depois de chegar às lojas, o NES continua ganhando jogos novos. Não são relançamentos nem conversões de títulos antigos: são criações inéditas, feitas por desenvolvedores independentes para o hardware original de 8 bits e, muitas vezes, publicadas com o código-fonte completo. Este guia explica por que o console é um alvo tão interessante, como é a cena homebrew de hoje e quais jogos de NES da FredyGames são os melhores para começar. Todos rodam no navegador, sem instalar nada.
O hardware em poucas palavras
O Family Computer, ou Famicom, foi lançado no Japão em 1983, e uma versão redesenhada chegou à América do Norte como Nintendo Entertainment System em 1985. Por dentro, os dois têm o mesmo pequeno conjunto de chips, e os limites dele moldam qualquer jogo feito para a máquina.
- A CPU é um chip da Ricoh construído em torno de um núcleo 6502, a mesma família de processador de muitos computadores domésticos da época, rodando a menos de 2 MHz. Tradicionalmente, os jogos são escritos direto em assembly 6502.
- A memória de trabalho é de apenas 2 KB de RAM. Tudo o que o jogo precisa lembrar a cada instante, da posição do jogador à pontuação, tem de caber ali.
- O processador de imagem (PPU) desenha uma tela de 256×240 feita de blocos (tiles) de 8×8 pixels. Não existe um frame buffer onde pintar pixels livremente: o jogo monta os tiles numa grade de fundo e posiciona até 64 sprites por cima.
- A cor é racionada. O fundo é colorido em blocos de 16×16 pixels, e cada bloco escolhe uma de quatro pequenas paletas de três cores, mais uma cor de fundo comum. Os sprites têm outras quatro paletas.
- Há um limite de sprites por linha. Só oito sprites aparecem na mesma linha horizontal. O nono simplesmente não é desenhado, e é por isso que tantos jogos de NES piscam: eles alternam, quadro a quadro, quais sprites ficam de fora, para que tudo continue pelo menos parcialmente visível.
- O som sai de cinco canais embutidos no chip da CPU: duas ondas de pulso, uma onda triangular (normalmente o baixo), um canal de ruído para bateria e explosões e um canal que toca amostras de baixa qualidade.
O cartucho também faz parte da máquina. O código e os gráficos ficam em chips separados dentro dele, e os jogos maiores acrescentam um mapper, uma lógica extra que troca bancos de memória para o console alcançar mais dados do que o seu espaço de endereços permite. Escolher o mapper é uma das primeiras decisões de quem faz homebrew, porque define o tamanho possível do jogo e os truques disponíveis.
Nada disso é reclamação. Essas restrições explicam a cara e o som dos jogos de NES, e trabalhar dentro delas é boa parte da graça para quem ainda programa para o sistema.
A cena homebrew hoje
O homebrew de NES existe desde o fim dos anos 1990, quando entusiastas começaram a documentar do zero o comportamento do console. Hoje esse conhecimento está reunido pela comunidade NESdev, cujos wiki e fóruns descrevem o hardware com detalhe suficiente para escrever um jogo, ou um emulador, sem nenhuma documentação oficial.
Alguns tipos de ferramenta aparecem sempre:
- Assemblers e compiladores. O pacote cc65 é a escolha mais comum: o assembler ca65 e o linker ld65 são usados por muitos projetos, e o compilador C permite escrever partes do jogo em C. Vários dos jogos abaixo são feitos com ele. Outros assemblers, como o asm6 e o NESASM, têm seus próprios adeptos.
- Bibliotecas. Bibliotecas pequenas e de licença livre cuidam do trabalho repetitivo: ler o controle, atualizar a tela com segurança na breve janela em que a PPU permite, tocar música. A neslib, do Shiru, por exemplo, é muito usada por quem prefere C.
- Ferramentas de gráficos e música. Editores de tiles conhecem as regras de paleta do NES, e trackers de música exportam as canções num formato que um pequeno driver de som toca no console de verdade.
- Emuladores com depurador. Os emuladores atuais param em qualquer instrução, mostram o conteúdo da memória de vídeo e apontam código que daria problema no hardware real. Isso deixa o desenvolvimento muito menos sofrido do que nos primeiros tempos.
Competições e game jams mantêm a cena viva. A comunidade NESdev já promoveu várias competições de programação, e eventos gerais como a Ludum Dare e o GitHub Game Off sempre recebem jogos de NES. Muitos homebrews depois viram cartuchos físicos, produzidos pelos próprios autores ou por pequenas editoras, o que lembra que são jogos de verdade para uma máquina de verdade, e não só arquivos para emulador.
Por que só parte do homebrew está aqui
A FredyGames só publica jogos cujos autores autorizaram expressamente a redistribuição, normalmente por meio de uma licença de software livre ou Creative Commons que também permita uso comercial, já que o site exibe anúncios. Isso deixa de fora muito homebrew excelente que é vendido em cartucho ou oferecido para download gratuito sem termos de redistribuição. Quando a licença exige, como a GPL, hospedamos o código-fonte completo da build exata que servimos. Os detalhes estão na nossa página de licenças e no guia sobre como verificamos as licenças. Se a ideia é nova para você, o que é homebrew? explica o básico.
Todos os jogos abaixo rodam no jsnes, um emulador de NES escrito em JavaScript. F2 guarda um retrato do jogo no seu navegador e F4 o recupera, e um gamepad funciona, se você tiver um.
Um passeio pelos nossos jogos de NES
Ação arcade
- Thwaite, de Damian Yerrick, é um jogo de defesa antimísseis: você protege uma fileira de casas de ogivas que caem do céu ao longo de uma semana de noites, com dois silos, munição limitada e um cursor que acelera e freia. É um bom exemplo de capricho em hardware apertado, incluindo fumaça e explosões que parecem translúcidas porque piscam. (Veja o aviso de fotossensibilidade na página dele.) Também dá para jogar a dois, em modo cooperativo.
- Lunar Limit, de Pubby, é um shooter de arena em que a nave atira sozinha e você cuida de pilotar e girar o canhão. Separar movimento e mira faz o jogo parecer um twin-stick num controle de dois botões.
- Big City Sliding Blaster, de NovaSquirrel, tira o andar de cena. Você desliza pela arena e dá impulsos na direção da mira, então cada movimento é um pequeno problema de física. Um amigo pode entrar a qualquer momento, e há um editor de fases.
- Falling e Lawn Mower são caças à pontuação curtas e diretas. Falling é um jogo de desviar que acelera aos poucos até a velocidade máxima; Lawn Mower, feito por Shiru para uma competição de programação de NES de 2011, pede que você corte toda a grama antes de o combustível acabar.
Plataforma
- Double Action Blaster Guys, também de NovaSquirrel, é um plataforma arcade de tela única com 52 fases cujo objetivo muda de sala para sala: derrotar inimigos, juntar dinheiro, sobreviver ao cronômetro. Tem cooperativo a qualquer momento e editor de fases próprio.
- Stallar foi feito para a game jam Ludum Dare 50. Parece um jogo de correr e pular comum, e é melhor não ler muito sobre ele antes de jogar.
Quebra-cabeças
- Ghosts and Graves é lógica pura, com 700 fases: deduza onde está o fantasma de cada túmulo a partir dos números nas bordas da grade. Se você gosta de passatempos de lógica no papel, só este já rende semanas.
- Ralph 4, de Pubby, é um labirinto de sala em sala em que encostar em qualquer coisa manda você de volta ao começo da sala. O relógio e o contador de mortes transformam tudo num desafio de speedrun.
- Lan Master pede que você gire pedaços de cabo até todos os computadores formarem uma só rede, contra o relógio, em 50 fases. Shiru o colocou em domínio público.
- Concentration Room é a versão de Damian Yerrick para o clássico jogo da memória, com um modo história leve e adversário controlado pelo computador.
Estratégia, RPG e jogos para dois
- File Fixers transforma um computador num reino de fantasia e os drivers em masmorras. É um RPG tático por turnos feito em um mês para o GitHub Game Off 2021, com bibliotecas livres de NES, e um dos jogos mais ambiciosos da nossa seção de NES.
- RHDE: Furniture Fight é um duelo para duas pessoas: mobílie sua casa, saqueie a do rival do outro lado da rua e depois conserte o estrago. Precisa de dois jogadores, então chame alguém e arrume um segundo gamepad.
- 8-Bit Table Tennis é o jogo mais simples possível, escrito em assembly 6502, e também é só para dois.
Por onde começar
Se você quer um jogo só para entender o que o homebrew de NES atual consegue fazer, jogue Thwaite ou Double Action Blaster Guys. Se prefere algo tranquilo, comece Ghosts and Graves e veja quantos mundos consegue terminar. Se tem curiosidade sobre desenvolvimento, dê uma olhada no código-fonte que hospedamos dos jogos GPL, como Thwaite e Concentration Room: são exemplos legíveis e bem organizados de projetos completos de NES.
A lista completa fica sempre na página da plataforma NES. Para dicas de controles, gamepads e saves, veja jogando jogos retrô no navegador, e, para conhecer o lado portátil da cena, siga para homebrew de Game Boy e Game Boy Color hoje.