domingo, 3 de novembro de 2019

Matrix - Raining Code no MSX

Implementação do efeito "raining code" no MSX, em assembler, utilizando a "screen 2". Para retornar ao Basic, tecle ESC.

Programa montado no Mega Assembler.

Update 15.10.2020

Fiz algumas alterações e ajustes no programa .bin. Agora o programa inicia com mensagens no "terminal".

Também fiz uma versão para MSX-DOS (matrix.com). Para isso, desta vez utilizei o Gen80. No final, a adaptação foi mais simples do que imaginei. Digo, "mais simples" depois de pronto, porque levei um tempinho pra descobrir como fazer. Leiam os manuais! Agradeço a ideia da versão DOS, dada por Xavi Sorinas. ¡Muchas gracias, Xavi! 

As duas versões estão em imagens de disco separadas, dentro do pacote compactado.

Download: Matrix - Raining Code


O vídeo é da primeira versão, mas dá pra ter uma ideia de como funciona:

 

terça-feira, 17 de setembro de 2019

Taipan Clássico para MSX

Taipan é um jogo de comércio e estratégia que se passa nos mares do extremo oriente, em meados do século XIX, quando o comércio de seda e ópio era amplamente explorado por navios de bandeira britânica.

É baseado no romance Tai-Pan, de James Clavell (o mesmo autor de Shogun), que retrata o ambiente comercial na região, a relação da coroa britânica com a China e a fundação e desenvolvimento de Hong Kong como colônia britânica.

A versão original do Taipan foi escrita totalmente em BASIC para o TRS-80 (model III), em 1979, por Art Canfil. Ao que parece, esta primeira versão não foi lançada comercialmente mas, ainda assim, foi amplamente difundida e pode ser facilmente encontrada nos sites especializados dessa plataforma. No Brasil a linha TRS-80 era representada principalmente pelos micros CP-500 e CP-300, da Prológica.

Em 1982, uma versão do jogo para Apple II foi escrita por Ronald J. Berg, da Mega-micro Computers, e publicada pela Avalache Production. Esta versão acrescentou alguns elementos e tem um melhor gameplay do que a versão original, além do que, conta com alguns efeitos poucos sonoros e gráficos de alta resolução (ainda que monocromáticos). O autor escreveu a maior parte do código em BASIC (Applesoft), mas também fez uso de diversas rotinas em linguagem de máquina.

Desenvolvimento da versão MSX


O Taipan foi um dos primeiros jogos que eu vi em um computador. No caso, era um TK85, clone nacional do ZX81, que possuía uma versão simplificada do jogo, em português. Ainda que limitado naquela versão, achava o jogo sensacional por permitir que o jogador saísse navegando pelos mares da China, enfrentando tempestades, para comprar e vender mercadorias. 

Então, quando ganhei meu primeiro computador, sonhava em programar minha própria versão do Taipan, que não existia para o CP-400. Infelizmente, nunca cheguei a ter um nível de programação suficiente (na época, entre 85 e 88) para desenvolver o jogo.

Já com o MSX (a partir de 88), decobri, depois de um tempo, que havia para ele uma versão do Taipan (Ocean, 1986). Só que era muito diferente do Taipan que conhecia, razão pela qual o jogo não me agradou.

Anos se passaram, e recentemente topei com uma versão web do jogo (de Jay Link), acompanhada de várias informações interessantes. Foi assim que descobri sobre a versão para Apple II. A partir daí comecei a jogar num emulador on-line e me surpreendi com a qualidade e jogabilidade da versão Apple. Eu me diverti bastante.

Então resolvi juntar as coisas: como tinha recomeçado a programar para o MSX, seria um projeto interessante fazer a versão do Apple para aquela plataforma. Pensei que seria uma tarefa simples e rápida.

Entretanto, escrever o jogo deu muito mais trabalho do que eu imaginei, principalmente por uma questão de gestão de memória que eu, por um erro de projeção, absolutamente ignorei ao iniciar a programação. Testar e acertar a jogabilidade (gameplay) foi algo que também me tomou bastante tempo, uma vez que fiz questão de caprichar o máximo que pudesse neste quesito. No final das contas, consegui incluir todos os elementos que planejei, adicionando cores, efeitos sonoros e música à versão do Apple II e até algum texto original do TRS-80 que havia sido suprimido naquela versão.

Toda a programação foi realizada utilizando o MSX-BASIC e o Mega Assembler, a maior parte do tempo emulados na versão Linux do openMSX. Utilizo o mesmo setup para desenvolvimento, tanto o real quanto o emulado: Expert 1.1, Mega Assembler 1.0a (cartucho) e interface de disco DDX 3.0f. Pode dar mais trabalho, mas tenho prazer o tempo todo em que estou imerso no ambiente MSX. Não tenho a mesma sensação ao utilizar um cross-assembler no PC (aliás, não tenho sensação alguma). Penso que é o prazer da caminhada que vale, não apenas o resultado final. 

Particularidades da versão MSX


  • O jogo roda em qualquer máquina com 64kB de memória RAM, desde que esta esteja em um único slot ou subslot;
  • Procurei fazer o jogo o mais universal possível, mas acabei por fazer a distribuição por imagem de disquete, para facilitar o carregamento das instruções on-line. Ainda assim, tecnicamente, o Taipan Classic pode ser carregado via fita cassete;
  • No jogo, não há necessidade de pressionar ENTER após digitar uma opção. Isso agiliza bastante o jogo;
  • Na tela principal, utilize a tecla ESC para retornar ao menu imediatamente superior ao que você se encontra. Por exemplo, se você selecionou navegar, mas se arrependeu e quer comprar ou vender mais alguma coisa, pode retornar teclando ESC;
  • Na tela principal, sempre que o jogo estiver esperando que você digite uma opção ou valor, é possível mudar o tema de cores de fundo/frente pressionando a tecla SELECT. Há 8 temas disponíveis;
  • O jogo acaba quando você fica milionário e não há opção para continuar;
  • Apesar da tradução para português, tentei manter o texto do jogo o mais próximo possível do original, presente nas versões TRS-80 e Apple II;
  • Da mesma forma, o texto das instruções do jogo (e o ASCII art lá encontrado) também é, em sua maior parte, tradução dos originais das versões TRS-80 e Apple II, com exceção das particularidades da versão MSX;
  • Acrescentei na versão MSX o texto dos eventos de variação de preço da versão TRS-80, que havia ficado de fora da versão do Apple;
  • Por razões óbvias, não implementei o bug dos "juros negativos" presente na versão do Apple II. Bug é bug, e não feature.

 

Tributo 

 

Coincidindo este ano de 2019 com os 40 anos de lançamento da versão original, fica aqui minha homenagem e agradecimento (in memorian), a Art Canfil, por ter criado esse jogo simples e brilhante.

Video com a música de abertura:

Gameplay (comércio/navegação/batalha):


Download: Taipan - Classic  [última atualização 18.09.19, 20:38]

Obs.: Considero ser ainda uma versão beta, portanto peço a gentileza de que os bugs sejam reportados para o email deste blog.

quarta-feira, 21 de agosto de 2019

Color Poker (TRS-Color)

Em 1988, eu lá com meus 13 pra 14 anos, depois de longa campanha finalmente convenci meus pais sobre as vantagens do MSX em relação ao CP-400, que eu tinha desde 85. Mas a condição, obviamente, era vender o CP-400 para ajudar a comprar um Expert, também usado.

Eu topei, sem problema. Gostava do meu amigo CP-400, de tantos anos, mas o MSX era uma máquina muito superior. A reação da minha mãe, por outro lado, foi de decepção. Ela me perguntou: "E meu jogo?".

Ela se referia ao Color Poker, que havia sido publicado na revista Micro Sistemas nº 62. Eu o havia digitado nas férias de verão de 86/87 e ela, pra dizer o mínimo, simplesmente adorava jogar. Volta e meia me pedia pra carregar o jogo. Eu saia de casa por qualquer motivo, voltava horas depois, e ela ainda estava lá, cada vez mais "rica" na jogatina. "Pena que o dinheiro é de mentira!", dizia ela, dando risada. Várias vezes eu tive que, constrangido, pedir licença para ela (o micro ficava no meu quarto) só para depois ouvir "Peraí que eu já ganhei uma grana preta! Não dá pra desligar agora e perder todo esse dinheiro". Vê se pode.

A solução para ganhar o apoio dela na troca dos micros foi dizer a ela: "Pô mãe, com o MSX eu vou fazer um jogo de pôquer 10 vezes melhor pra você". Ela parou e ficou me olhando, desconfiada da minha promessa. De fato, ela tinha razão pra desconfiar. Já com o MSX, eu me lembro de ter mostrado algum outro jogo de pôquer que arrumei, tentando substituir o "dela". Mas ela dizia que não era igual e não tinha graça. Ela queria que fosse igualzinho. Eu até cheguei a ensaiar fazer uma conversão da listagem, mas cheguei à conclusão, na época, que era mais fácil reescrever o jogo do zero. E acabou que, claro, nunca fiz o bendito. De quando em quando eu escutava "E meu jogo hein? Fiquei a ver navios...". Confesso, engambelei minha mãe nessa história.

"Fast Forward" para 2016. Eu havia abandonado a programação desde 92, quando resolvi mudar de carreira e abandonar o curso de engenharia da computação que iniciara um ano antes. Era janeiro, eu estava de férias... Eis que um belo dia, viajando pela internet, me deparo com o fantástico site Datassette. Entrei no site, entrei nas revistas, mergulhei nas páginas, fui transportado em espírito para os anos 80: as matérias, as propagandas, as listagens... Então eu vi, numa das Micro Sistemas que eu tive, lá estava a listagem do Color Poker. "Aaahhhh... vou digitar isto aqui!". Descobri um emulador de TRS-Color para Linux (xroar), compilei, funcionou, mandei ver. Com um prazer enorme, gastei mais alguns dias, enquanto redescobria o Color Basic, corrigindo e melhorando o programa da listagem original. 

Assim, quase 30 anos depois, cheguei na casa da minha mãe com um pendrive e instalei no computador dela o xroar e o Color Poker. Ela só tinha que clicar num ícone para o carregamento automático do jogo. Programa na tela verde do TRS emulado, perguntei a ela: "Então, lembra disto aqui?". Ela, "Nooooossaaa, o meu jogo de pôquer! Que legal!". 

Promessa cumprida, ela agora tem mais uma opção entre o Mahjong e o Aisleriot da vida. Às vezes ela chega pra mim e me fala: "Hoje quebrei a banca no pôquer! Pena que o dinheiro não é de verdade!", e dá risada.

Compartilho aqui o programa digitado, de autoria de Weltman Andrade de Carvalho. Minha lista com a descrição das alterações (umas 20) está num arquivo texto, dentro do pacote, que inclui imagens de disco (.dsk) e de fita (.cas) do programa. Com todo respeito ao Sr. Weltman, os sons do programa estão bem melhores agora.

E essa foi, resumidamente, a história da minha volta à programação, ou melhor, o meu início na retroprogramação, que eu devo à imersão nostálgica proporcionada pelo Datassette e, claro, à minha mãe.

Download: Color Poker - TRS-Color
 





Relógio BCD para o TK85 no ZX Assembler da Artic

Um relógio BCD (binary-coded decimal) mostra os dígitos decimais em formato binário. Cada dígito decimal das horas, minutos e segundos está ...