Consoles abertos em miniatura: Arduboy e Uzebox
Nem todo console da FredyGames saiu de uma grande empresa. O Arduboy e o Uzebox foram projetados por pessoas, para entusiastas, em torno da mesma família de microcontroladores de 8 bits usada em inúmeros projetos de eletrônica. Os projetos e o software são abertos, os jogos são feitos pelas comunidades, e muitos deles são software livre. Este guia apresenta as duas máquinas, explica por que essa abertura importa e escolhe os jogos que vale experimentar primeiro. No fim, uma seção curta olha para um console bem mais antigo que hoje vive um espírito parecido de "faça você mesmo": o Atari 2600.
O que eles têm em comum
Os dois consoles são construídos em torno de microcontroladores AVR, uma família de chips de 8 bits que muita gente conhece pelas placas Arduino. Um microcontrolador reúne processador, memória de programa e um pouco de RAM num só chip. Ele foi feito para controlar aparelhos e engenhocas, não para rodar jogos, e é exatamente isso que torna esses consoles interessantes: tudo o que você vê e ouve é arrancado de uma peça com poucos kilobytes de memória.
O outro ponto em comum é a abertura. As bibliotecas de software são publicadas sob licenças livres, o hardware é documentado, e as pessoas montam seus próprios aparelhos compatíveis. Para os jogos deste site, isso tem uma consequência prática: como as ferramentas são abertas, podemos compilar os jogos nós mesmos a partir do código-fonte dos autores quando necessário, e hospedar esse fonte ao lado do jogo.
Arduboy: um videogame do tamanho de um cartão de crédito
O Arduboy foi criado por Kevin Bates. Começou como um protótipo com o tamanho e a espessura de um cartão de crédito e, depois de uma campanha bem-sucedida no Kickstarter em 2015, a versão comercial chegou em 2016, um pouco mais grossa, mas ainda pequena o bastante para caber na carteira. Modelos posteriores, a partir do Arduboy FX, acrescentaram um chip de memória flash que guarda centenas de jogos no próprio aparelho.
As especificações são minúsculas até para padrões retrô:
| Peça | Arduboy |
|---|---|
| Processador | ATmega32U4, 8 bits, 16 MHz |
| Memória de programa | 32 KB de flash (parte usada pelo bootloader) |
| RAM | 2,5 KB |
| Memória para saves | 1 KB de EEPROM |
| Tela | OLED de 1,3 polegada, 128×64 pixels, monocromática |
| Controles | direcional e dois botões (A e B) |
| Som | alto-falante piezoelétrico |
O chip é o mesmo de algumas placas Arduino, e essa é a chave da comunidade do Arduboy. Os jogos são escritos em C++ com as ferramentas do Arduino e uma biblioteca livre, a Arduboy2, que cuida da tela, dos botões e do som. Quem já fez um LED piscar com um Arduino consegue começar um jogo na mesma tarde, e o fórum da comunidade organiza game jams que rendem títulos novos todo ano.
Uma tela de 128×64 em preto e branco parece limitante, e é. Mas ela obriga a um design gráfico forte: silhuetas claras, pontilhado bem usado e animações que se leem em meia dúzia de pixels. Alguns dos melhores jogos de Arduboy também levam o processador muito além do que se imaginaria.
Jogos de Arduboy para começar
Todos estão na página da plataforma Arduboy.
- Mystic Balloon, do TEAM a.r.g., é um plataforma de 39 fases em forma de labirinto em que os balões são ao mesmo tempo o seu planador e a sua vida. É um dos jogos de Arduboy mais queridos e uma ótima vitrine do que a tela consegue fazer.
- Catacombs of the Damned!, de James Howard, é uma exploração de masmorra em primeira pessoa que roda em 3D fluido naquela tela de 128×64, com dez andares gerados aleatoriamente. Surpreende de verdade num microcontrolador de 8 bits.
- MicroCity, também de James Howard, é uma simulação completa de construção de cidades, com zonas, energia, orçamento e incêndios. Nós o compilamos a partir do fonte do autor.
- Dark & Under é uma exploração de masmorra em primeira pessoa à moda antiga, com combates por turnos decididos nos dados e um pequeno mapa automático.
- Evade 2 coloca você na cabine de uma nave contra inimigos em 3D aramado, onda após onda.
- Hello, Commander é um jogo de tática por turnos bem-humorado, e Cribbage é o clássico jogo de cartas com um adversário que explica a contagem dos pontos.
- Para algo rápido, experimente os muitos joguinhos arcade de OBONO, como Chri-Bocchi Cat, um malabarismo de dois minutos, ou o quebra-cabeça de blocos na vertical Stairs Sweep.
Uzebox: um console que desenha a imagem em software
O Uzebox, criado por Alec Bourque e publicado pela primeira vez em 2008, segue um caminho bem diferente. A maioria dos consoles tem chips dedicados para vídeo e som. O Uzebox não tem nenhum: um único microcontrolador faz tudo, inclusive gerar o sinal de TV linha por linha, em software.
Segundo as especificações do próprio projeto:
| Peça | Uzebox |
|---|---|
| Processador | ATmega644, 8 bits, com overclock para 28,6 MHz |
| Memória de programa | 64 KB de flash |
| RAM | 4 KB |
| Cores | 256 na tela, com 3 bits de vermelho, 3 de verde e 2 de azul |
| Som | 5 canais, mixados em software |
| Saída de vídeo | composto e S-Video |
| Controles | duas entradas para controles compatíveis com NES/SNES |
| Armazenamento | entrada para cartão SD |
Gerar vídeo em software significa que o processador passa boa parte do tempo entregando pixels à tela no instante exato, e a lógica do jogo roda no tempo que sobra. Esse trabalho fica com o kernel do Uzebox, uma biblioteca compilada dentro de cada jogo que cuida de vídeo, som e controles. Ele oferece vários modos de vídeo, de layouts com tiles a bitmaps, e cada jogo escolhe o equilíbrio entre resolução, cor e tempo livre de processador que lhe convém.
O projeto é aberto no sentido estrito: os esquemas elétricos e o kernel são publicados sob a GNU GPL versão 3. Entusiastas montam suas próprias placas a partir do projeto publicado, e versões montadas já foram vendidas por pequenos fabricantes. Como o kernel é GPL e vai compilado em cada jogo, os jogos em geral também são GPL, e por isso hospedamos o fonte completo, kernel incluído, ao lado de cada um.
Jogos de Uzebox para começar
Os dois estão na página da plataforma Uzebox.
- Bugz é um plataforma de tela única na velha tradição dos fliperamas: pegue todos os biscoitos, pise nos insetos por cima e corra contra o relógio de bônus ao longo de 21 fases. Também tem modos para dois jogadores.
- UzeSnakes é o conhecido jogo da cobrinha feito com carinho, com itens que aceleram, invertem os controles ou trocam a cabeça pelo rabo, e um modo para dois.
Os dois rodam no CUzeBox, um emulador fiel do Uzebox que compilamos para WebAssembly.
Por que hardware aberto importa
É fácil tratar a abertura como detalhe técnico, mas, para plataformas pequenas, ela faz uma diferença real.
- A plataforma sobrevive a quem a criou. Quando o projeto e o software são públicos, a comunidade continua montando aparelhos, consertando ferramentas e escrevendo jogos mesmo que o vendedor original pare.
- A emulação é fiel. Hardware documentado é muito mais fácil de emular com precisão do que uma máquina cujo comportamento teve de ser descoberto por engenharia reversa.
- O aprendizado vem junto. Muitos jogos publicam o código-fonte, e o próximo desenvolvedor pode ver exatamente como um motor 3D cabe em 32 KB ou como um kernel pinta a tela sem chip de vídeo.
- Compartilhar é legal. São as licenças livres que permitem a um site como a FredyGames hospedar esses jogos. O guia sobre como verificamos as licenças explica o que procuramos, e os textos completos estão na página de licenças.
Quadro à parte: a cena homebrew do Atari 2600
O Atari 2600 não é hardware aberto e é bem mais velho que os dois consoles acima: foi lançado em 1977. Mas a cena homebrew dele compartilha o mesmo espírito de fazer muito com quase nada. O console tem só 128 bytes de RAM e nenhum frame buffer. O programa precisa atualizar o chip gráfico enquanto o feixe da TV desenha cada linha, um estilo de programação muitas vezes chamado de "correr atrás do feixe" (racing the beam). Os desenvolvedores de hoje usam assemblers livres e ferramentas como o batari Basic, e a comunidade ainda lança cartuchos novos todo ano.
Os nossos jogos de Atari 2600 são todos homebrews novos e de licença livre. 2048 2600 cabe, com o quebra-cabeça de deslizar números e um modo para dois, num cartucho de 2 KB. Dungeon Deck transforma a exploração de masmorra num jogo de cartas no estilo paciência, e Legendary Spear é uma justa arcade rápida no espírito dos primeiros clássicos do console.
Por onde começar
Se você quer se impressionar, jogue Catacombs of the Damned! lembrando que ele roda num chip com 2,5 KB de RAM. Se quer algo para passar horas, experimente Mystic Balloon ou MicroCity. No Uzebox, Bugz é a melhor porta de entrada. Depois compare com as máquinas imaginárias de consoles de fantasia: CHIP-8, TIC-80 e WASM-4, ou leia o que é homebrew? para ter o quadro geral. Dicas práticas de controles e saves estão em jogando jogos retrô no navegador.