:: Parte 2

Ao Assembler e além...

:: O que realmente significava usar essa linguagem de programação?

Programar em linguagem de máquina ou Assembler (como era conhecido nos anos 80) era o top de linha da programação de computadores. Nenhuma outra linguagem se equiparava em leveza, desempenho, uso dos recursos, etc. Qualquer item, qualquer componente do computador era acessível e bastava querer controlar as funções básicas do micro para conseguir o melhor dos melhores.

Mas isso tinha um preço alto a ser pago: um programa escrito em Assembler para Z80 só rodava em computadores Z80. E em se tratando de jogos, mesmo entre máquinas Z80, porém de linhas diferentes, era praticamente impossível uma conversão rápida e eficiente. Portabilidade não era uma palavra ainda usada em programação e ela só apareceu um pouco mais à frente, com a popularização da linguagem "C" (embora o uso dela nesses casos tenha sido um dos maiores engôdos da informática, de todos os tempos e que repercutiu até pouco tempo atrás).

 

:: Como foi o aprendizado desta linguagem de programação?

No meu caso específico, aprender Assembler para programar jogos era essencial para obter um melhor desempenho tanto na funcionalidade quanto na velocidade de execução dos jogos. Aprender sem livro, sem professor, sem qualquer tipo de literatura técnica foi uma das coisas mais inusitadas que eu consegui empreender. Ficava horas olhando uma listagem de mnemônicos Z80 no manual do micro e uns poucos parágrafos obscuros, escrito sobre a linguagem em revistas estrangeiras. Tentava tirar deles algum sentido prático que me indicasse uma direção a seguir.

Mas, no exato instante que percebi não apenas o significado dos mnemônicos mas o que eles realmente produziam, então todo o resto ficou claro. Daí em diante foi sopa no mel, embora eu não negue que programar em linguagem de máquina era bastante trabalhoso.

As características não apenas da linguagem, mas da sua baixa portabilidade me colocou diante de algumas decisões que são pertinentes até hoje: por mais ampla que seja a codificação, em algum momento é necessário estabeler limites e eles impõem, de imediato, em quais máquinas o jogo vai rodar. Isso define também para que público o jogo será feito.

 

:: Em que nível de integração se dava a "escrita" dos programas?

Num primeiro momento não existiam os compiladores de programação, então era necessário "escrever" o programa num papel, converter os mnemônicos aos seus respectivos códigos binários (na verdade era mais fácil trabalhar com hexadecimais) e em seguida digitá-los no computador. Era um trabalho braçal imenso e para isso eu desenvolvi um formulário próprio, que me permitia entre outras coisas, calcular de forma rápida e segura os jumps (saltos) relativos. Tanto os saltos à frente, quanto os saltos para trás.

Com a popularização dos micros maiores (em especial os TRS80) com mais memória, apareceram os primeiros compiladores permitindo assim a programação do jogo diretamente em mnemônicos. Além disso e por conhecer bem a estrutura dos micros, passei a programar tudo num CP 500. Tanto os jogos para ZX Spectrum, quanto para o MSX eram escritos no CP 500 e depois convertidos para esses dois micros.

 

:: Como foi a migração para o Assembler do PC?

No começo estranhei um pouco a sintaxe das instruções, mas a essência da programação era a mesma. Outra diferença a ser destacada era a estrutura dinâmica dos PCs, o que permitia que um programa fosse executado em qualquer posição da memória. Isso tinha implicações diretas na forma de programar.

Por outro lado, a questão do acesso ao vídeo, nos PCs, trouxe de volta as questões pertimentes ao tipo de máquina para a qual se fazia o jogo e o público consumidor que era usuário daquele modelo específico. Existiam diversos padrões, como CGA, EGA, VGA SuperVGA e finalmente, com a popularização do Windows, o acesso indireto às áreas gráficas.

 

:: Até que momento o Assembler foi usado nos jogos?

Por volta de 1994 eu já sentia a necessidade de migrar para o ambiente de programação do Windows e vinha pesquisando como fazer isso. O último grande projeto meu, em Assembler para DOS, no PC, foi a versão do Amazônia em SuperVGA, produzida com o apôio da Sony e distribuida em CDrom. Dai em diante passei a usar o Delphi.

Fui apresentado ao Delphi por um amigo, ao comentar que estava em busca de uma migração para Windows que me permitisse levar o conhecimento do Assembler mas ao mesmo tempo não exigisse de mim um aprendizado do zero, em termos de usar os recursos do sistema operacional.

Então ele me indicou o Delphi com as seguintes palavras: em Delphi você estará usando Pascal, que é em essência um Basic metido a mauricinho e se quiser usar Assembler, basta iniciar um bloco asm ... end. Melhor impossível e meu caso com o Delphi dura até hoje.

Na verdade nunca conheci nenhuma outra linguagem ou estrutura de programação que fosse tão simples e ao mesmo tão poderosa. Acredito que o Delphi é o único sistema que permite, ainda hoje, a um desginer gráfico programar como se ele estivesse numa prancheta de desenho.

 

fale com o autor: renato@tilt.net