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.

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á ...