domingo, 31 de outubro de 2021

Doom Fire para MSX, ZX81 e TRS-80

Após descobrir o tal "algoritmo do fogo do Doom", cuja existência até então ignorava por completo, resolvi brincar com ele. Desta vez, fiz logo três versões de uma vez. 

Primeiro para o ZX81, onde desenvolvi o mecanismo e fui otimizando o código. Depois disso, portar para o TRS-80 foi bem tranquilo. Na verdade colocar coisas na tela do TRS-80 é mais simples do que no ZX81, então foi só um pequeno trabalho de descomplicação. 

Já no MSX, tive que aprender como funciona a tela no modo 3 (multicolor), que nunca havia lidado a não ser no BASIC. A cada frame os dados são processados em três etapas. A primeira atualiza os valores dos 1536 bytes correspondentes, cada um, a uma célula do fogo. Como a Screen 3 não é um modo bitmap, os dados são organizados, na segunda etapa, para que fiquem dispostos num buffer da maneira que exige o processador gráfico. Só então os dados são impressos na tela, numa terceira etapa.

A versão do ZX81 desenvolvi na tabelinha nano/Pasmo, testando no emulador sz81. A do TRS-80, fiz no EDTASM, rodando no emulador SLDTRS. E a do MSX fiz no Mega Assembler, rodando no openMSX. 

Download: Doom Fire - MSX/ZX81/TRS-80

Versão MSX (a versão final tem a animação um pouco mais fluída do que a que aparece no vídeo):


Versão TRS-80:


Versão ZX81:








sábado, 30 de outubro de 2021

Matrix - Raining Code para TRS-80

Portar o código em si do ZX-81 para o TRS-80 foi bem simples. O que me deu um pouco mais de trabalho foi entrar no mundo do TRS-80. Como só uso ferramentas externas em último caso (em único caso, na verdade, do ZX-81, que uso cross-assembler), aprendi basicamente como funciona o emulador SDLTRS, o sistema operacional do TRS-80 e o assembler EDTASM. Levei um tempinho pra me acostumar com todas essas novidades, mas valeu a pena. Afinal eu me meto nessas velharias mesmo pra ter o prazer de aprender e lidar com elas.  E faz tempo que eu queria mexer com o TRS-80, porque o CP-500 foi um dos primeiros computadores que vi funcionar. E que impressão aquele monstrinho branco dava!

Bom, segue o download de uma imagem de disquete contendo o programa.

Download: Matrix - Raining Code - TRS-80 (primeira versão)

Atualização em 16/06/2026:

Passado algum tempo, agora fiz uma versão utilizando os caracteres katakana, disponível na ROM do CP 500. Tinha tentado fazer essa alteração tempos atrás mas ela não funcionava. Achava eu que eu estava fazendo alguma coisa errada para selecionar os caracteres especiais e, dos caracteres especiais, o katakana. Mas depois de quebrar a cabeça e perder uma quantidade significativa de cabelos, percebi que o erro era no meu código fonte: as linhas acrescidas ao início da listagem simplesmente não estavam sendo montadas pelo EDTASM, porque se localizavam antes do rótulo que marcava o início da montagem. Não atentei para essa particularidade do EDTASM, motivo pelo qual todas as alterações que eu fazia no código para que funcionasse não tivessem efeito (aliás foi assim que eu cheguei à conclusão que o código não estava sendo montado para depois entender porquê).

Download:  Matrix - Raining Code para o TRS-80 - Versão Katakana

 



E uma bruxa passou pela minha janela

  Um tanto atrasado para o Halloween de 2025, um tanto adiantado para o Halloween de 2026. Tenho tido pouco tempo para programar, então o de...