chester's blog

technology, travel, comics, books, math, web, software and random thoughts

Harmony: Rodando Jogos (E Testando Programas) Num Atari De Verdade

| Comments

Cartucho HarmonyA programação para Atari 2600 é uma curiosidade que já me levou a escrever artigo e minstrar palestras sobre o assunto. Vira e mexe estou lendo e experimentando, e até acredito que um dia alguma dessas brincadeiras pode se tornar um jogo de verdade.

Um bom emulador é necessário para programar para qualquer dispositivo, seja ele um celular ou um console. O Atari tem o excelente Stella (cujo debugger é bom até para quem só quer entender como algum jogo funciona). Mas é igualmente importante testar o programa no console “de verdade”, pois só lá os detalhes vão aparecer.

Foi com esse objetivo que eu encomendei o Harmony. Em termos simplificados, é um cartucho com slot para cartão SD, que disponibiliza os jogos (ROMs) gravados no cartão através de um menu no console. Comparando com aqueles cartuchos com 2 ou 4 jogos selecionáveis através de chaves, é uma evolução incrível.

Cartucho Harmony: MenuComo tudo que é simples, tem uma engenharia sofisticada por trás. As especificações mostram que, só em termos de clock, a CPU do cartucho é 70 vezes mais rápida que o do videogame (na prática a diferença é ainda maior, afinal, é uma arquitetura ARM de 32 bits contra um 6502 de 8 bits). Talvez não precisasse de tudo isso, mas um hardware mais generoso pode embarcar um software que reconhece dezenas de formatos de ROMs, e que pode ser atualizado com faclidade.

Para mim foi útil logo de cara, porque o “Hello, World” que eu apresentei no Dev In Sampa nunca tinha rodado em um console de verdade, e eu não acreditava que acertaria de primeira. Dito e feito: eu não zerei os registradores do TIA (chip de vídeo) correspondentes aos objetos visuais que não estava usando, e eles apareciam como “lixo” na tela. Este problema não acontecia no emulador, porque ele zera a memória emulada ao inicializar. Felizmente a correção foi fácil, e já foi aplicada nos slides e no código-fonte.

Cartucho Harmony: Hello World

Ele também foi útil para viabilizar o sorteio2600, um programinha que sorteia números entre 0 e uma centena qualquer (100, 200, 300, etc.), feito especialmente para o Dev In Vale. Novamente, entre o emulador e a vida real havia uma diferença: o score mode, que divide o fundo (playfield) monocromático em duas cores (uma à esquerda e outra à direita) não faz essa divisão de forma 100% precisa (a cor muda um tiquinho antes da hora).

Como os projetistas de jogos já sabiam disso (dificilmente usariam emuladores naquela época), eles não usavam o playfield todo quando habilitavam o score mode. Mas o meu código já tinha sido pensado para sumir com metade dele (e usar toda a outra metade), então eu “roubei”, usando um dos missiles para cobrir a parte do playfield que não deveria aparecer. Isso está documentado no código, e fica como mais um exemplo dos truques que eram necessários para fazer o hardware limitado do Atari 2600 atender às necessidades de cada jogo.

Se interessar, veja mais fotos do Harmony em ação.

(esse post pede um agradecimento especial ao Alexandre Oliveira, que me cedeu vários cartuchos de Atari para testar o console “novo”, evitando que eu procurasse problemas onde eles não existiam)

Comments