terça-feira, 25 de dezembro de 2012

Pang

Feliz Natal a todos os fãs do TK90X/TK95 e de retrocomputação em geral.  Papai Noel está trazendo um fabuloso presente, o Pang adaptado para expansão TKMEM-128 e disco Beta.


Eu vinha adaptando programas mais fáceis que já foram divulgado antes, mas ao mesmo tempo estava empenhado em adaptar este jogo, atendendo o pedido de Emmerson Maurílio. A dificuldade origina-se no fato de ser multi-load, isto é, de carregar partes do programa enquanto se avança pelas fases do jogo. A julgar pelo comprimento do vídeo abaixo, são muitas fases para vencer.


A adaptação de jogos multi-loads para disco Beta para o TK90X, que tem apenas 48KB de RAM, não é tarefa fácil pois o TR-DOS requer certo espaço de memória de trabalho. Só de variáveis de sistema são 112 bytes, além de demandar mais 256 bytes como buffer para armazenar um setor de disco. Encontrar algumas centenas de bytes que não são usados pelo jogo não é uma tarefa fácil, portanto tais adaptações são trabalhosas. Em alguns casos não há espaço livre suficiente e o remédio é lançar mão de alguma memória externa, como fez José Roberto no jogo Turrican II ao usar a RAM da Multiface 1.

Com a TKMEM-128, a memória disponível torna-se maior e há mais chances de encontrar algum espaço livre. No Pang, o banco de RAM 6 permanece sem uso, portanto são 16KB livres disponíveis. Assim, pude pensar num projeto mais ambicioso.

Resolvi armazenar no banco de RAM livre, um sistema BASIC completo e as variáveis de sistema TR-DOS. Na hora de carregar uma fase, o conteúdo da RAM do jogo é substituído pelo que está guardado e, assim, pode-se fazer uso dos comandos de disco do DOS. A principal vantagem desta abordagem é que funcionaria nas duas versões de Beta 48 existentes no Brasil (CAS e CBI), e também na Beta 128, sem modificações.

A lei de Murphy não falha, sempre num projeto relativamente complexo como este surgem erros. Eu demorei um bom tempo para depurar as rotinas de carregamento de disco e, em certos momentos, tive que parar e me dedicar a outros projetos, para não acabar perdendo a paciência. A despeito de todos os percalços, depois de mais de 3 semanas consegui finalmente chegar ao objetivo. Todas as rotinas estão funcionando, consegui ver que carrega a primeira fase do disco e roda perfeitamente. Entretanto não pude passar desta fase, se alguém conseguir chegar até o final do jogo, peço a gentileza de me informar se não houve nenhum problema.

Os arquivos Hobeta podem ser baixados do Google Drive ou 4 Shared. Os códigos fontes das rotinas estão no mesmo pacote, para informar os curiosos ou aqueles que desejam fazer suas adaptações. Como eu já parti de um arquivo tipo TAP, não vi necessidade de converter para a fita cassete, uma vez que é um formato bem conhecido e funciona com DivIDE. Falando nisso, usei o arquivo 'Pang128(BUGFIX).tap.zip' do WOS que já tem um bug devidamente consertado.

Além de finalmente poder jogar Pang no TK90X com TKMEM e Beta, eu obtive uma infraestrutura de controle da interface de drive que poderá ser empregada em outros jogos 128K com multi-load. A barreira foi superada, acredito que a partir de agora mais jogos virão a ser adaptados.

2 comentários:

  1. Flávio, você está de parabéns pela competência de sempre. PANG é obrigatório para todos que conseguirem a TKMEM.

    O avanço nas rotinas de carregamento com certeza irá compatibilizar outros jogos. :D

    ResponderExcluir
    Respostas
    1. Valeu, Emmerson. Ainda tenho guardada a lista que você fez dos programas candidatos à adaptação para TKMEM-128.

      Excluir

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.