sábado, 8 de março de 2025

Criar o Manager de Futebol 2025 para ZX Spectrum (parte 1)

Depois de termos feito o anúncio de Manager de Futebol 2025, assim como a repectiva review (ver aqui), vamos agora, e durante alguns Sábados, disponibilizar uma espécie de diário de criação do jogo, escrito pelo próprio Mário Armão Ferreira. Temos assim hoje a primeira parte. E aproveitem para ver a sua excelente página, a PCManias (ver aqui).

Criar o Manager de Futebol 2025 para ZX Spectrum (parte 1)

O bichinho pelo Spectrum sempre me acompanhou. Se houve máquina que sempre me cativou, foi o velhinho Spectrum. Era fascinado com ele e a magia de ver novos jogos e maravilhosas ilustrações e jogos na revista Crash que comprava mensalmente, foi algo que me marcou de forma indelével até aos dias de hoje.

Apesar de na altura a evolução para os computadores de 8 bits e o PC terem apagado temporariamente o saudosismo do Spectrum, a realidade é que a marca deixada estava lá, e com o passar dos anos, revelava-se algo que cada vez mais mexia comigo.

A vontade de ter novamente um Spectrum era muita, e nesse sentido acompanhava regularmente as iniciativas de relançamento do Speccy, mas que nunca foram verdadeiramente capazes de suprimir completamente o saudosismo da máquina original.

O anúncio do “The Spectrum” foi para mim uma bomba. Era a máquina que eu ansiava há mais de 30 anos, e quando pude finalmente confirmar que aquilo que foi entregue realmente era um verdadeiro Spectrum, atualizado aos dias de hoje, mas sem perder a sua identidade original, fiquei fascinado.

O voltar a jogar os jogos da minha infância usando aquelas teclas de borracha foi uma sensação de nostalgia fantástica. Voltei a ser criança na minha mente.

Mas voltar a reviver o Spectrum não passava apenas por jogar jogos, mas por voltar a programar a máquina. E nesse sentido, resolvi fazer um jogo para ela!

O quê? Algo novo? Dada a onda de revivalismo lembrei-me do Treinador de Futebol lançado sob o nome Softimar em 1989. E pensei… Porque não? Vou fazer um REMAKE, e melhorar o original, mantendo o espírito do “The Spectrum” de atualizar, sem perder a identidade.

E assim, deitei mãos à obra.

Apesar de o conceito original passar por programar em modo Spectrum 48K, rapidamente desisti da ideia. Andar atrás de comandos com combinações de teclas CAPS SHIFT e SYMBOL SHIFT era algo já demasiadamente arcaico, pelo que sem pensar nas consequências, mudei para 128K Basic.

A diferença é que o 128K faz o input dos comandos da mesma forma que as máquinas atuais. Eles são escritos letra a letra, e depois reconhecidos pela máquina. E assim comecei a programar… No “The Spectrum”, em modo 128K.

A ideia com o Manager de Futebol era, como já foi dito, acima de tudo, não criar algo novo, mas manter o espírito do jogo original de 89, apenas melhorando-o em todos os aspectos.

Na fase inicial o que eu tinha em mente melhorar e muito, eram os menus. Tinha de acabar com o input escrito, e fazer tudo por reconhecimento de teclas. 

Uma das situações que o jogo original de 89 previa, mas que não vemos ativa, é o podermos usar várias equipas. Essa situação encontra-se inativa pelo simples facto que foi esquecido que o Spectrum, sem lhe baralhar o relógio do sistema, na primeira tirada de números aleatórios apresenta sempre 1 como resultado. Assim, devido à falta de um simples comando RANDOMIZE, o jogo foi lançado prendendo os jogadores apenas a uma equipa. 

Essa teria de ser também uma situação endereçada aqui nesta nova versão do jogo. Teríamos de escolher uma equipa, escolhida de forma consciente, e não retirada à sorte.

Mas nesta fase inicial, tirando isto pouco sabia sobre a orientação a dar ao jogo, e comecei por trabalhar em dois ecrãs de carga, que depois nem sequer cheguei a usar. Nesta fase o jogo ainda se chamava Treinador de Futebol 2025.


No entanto estas imagens fizeram-me perceber que o nome Treinador de Futebol não se enquadrava bem com o jogo original. E assim surge a mudança para Manager de Futebol 2025.

Era altura de começar a programar.

Apesar de o Basic do Spectrum se revelar já um pouco arcaico, a evolução do jogo correu muito bem e com muito saudosismo à mistura. Comecei por criar uma estrutura básica para todas as componentes do mesmo, colocando-o, apesar de uma forma muito rudimentar, com a estrutura de menus funcional. Era altura de melhorar os componentes.

A primeira coisa que quis fazer foi resolver a questão dos jogos em casa e jogos fora, com alternância jogada a jogada, uma situação que o jogo de 89 não prevê. E queria um sorteio real que variasse com a equipa escolhida e não algo fixo. 

Foi ao programar esta parte, logo inicial, que senti a necessidade de largar o “The Spectrum” como base de programação. Executar este código para debug era algo lento, e eu precisava de o correr dezenas de vezes. Nesse sentido, instalei um emulador no meu PC, e passei o desenvolvimento para lá. Podia assim alterar a velocidade de execução, e correr o código de forma quase imediata, e acima de tudo, usar a minha ferramenta preferida de programação… o Bloco de Notas.

Assim, criava o código no Bloco de notas, e usando o software ZMAKEBAS, convertia para TAP, e carregava o TAP instantaneamente no emulador, executando o código a uma velocidade que o Spectrum não conseguia oferecer.

E assim a primeira grande novidade estava criada. Um sorteio que envolve um total de 306 jogos, calculado no inicio do jogo.

Como curiosidade sobre esta situação, quando meti o código a ser executado à velocidade real, os menus eram lentos e com uma resposta horrível ao pressionar das teclas. Tive de rever o código todo e otimizar essa situação tomando em conta a real velocidade da máquina, e melhorando de forma tremenda a resposta.

Ora como referi inicialmente, eu comecei a programar em modo 128KB apenas pela simplicidade, e sem ter noção das consequências do que estava a fazer. A determinada altura, estaria já o jogo perto de 80% completo face ao conceito original, deparo-me com um erro que me assusta:

OUT OF MEMORY

Ui…E agora…O jogo não está completo!

Foi aqui, e apenas aqui, que resolvi analisar a memória do Spectrum, e o que descobri foi ainda mais assustador. Não só estava sem memória, como, devido a todas as novidades introduzidas, estava a usar 64KB de RAM, o que teria forçosamente de excluir o Spectrum 48 KB das máquinas suportadas.
Esta situação deixou-me deveras preocupado sobre como avançar, e deixou-me igualmente perceber uma outra realidade. O Treinador de Futebol de 1989 terá ficado bem mais próximo dos limites do 48K do que alguma vez pensámos.

Resolver esta situação foi algo deveras stressante. Comecei uma optimização do código tremenda, basicamente a poupar todos os bytes que conseguisse, o que incluiu não só a criação de mais sub-rotinas para evitar código repetido, mas igualmente o reduzir comandos Print e a dimensão das Strings. Passei igualmente os DATA BIN que usava para definir gráficos, para meros DATA. 

Apesar de poupanças que permitiram acabar novas secções do jogo que estavam pendentes, a realidade é que a RAM não chegava. Era pura e simplesmente impossível, mesmo com 64 KB de RAM, criar o jogo que eu estava a desenvolver. A caça ao Byte era necessidade, mas infelizmente… o Byte não chegava.

Nesta altura, não só secções inteiras, como o mercado de Transferências estavam por fazer, como ainda queria colocar música no jogo, e criar uma sequência final para a conquista do campeonato. Era impossível arranjar tanta RAM apenas com otimizações.

Foi aqui que me ocorreu… É um Spectrum 128KB… E eu estou a usar 64KB. Isso quer dizer que ainda tenho mais 64 KB algures para usar. E com esses 64 KB não só conseguiria acabar o jogo… como poderia melhorar o existente. A questão é que ia-me meter em caminhos desconhecidos e que nunca tinha explorado no Spectrum. Como acedo ao resto da RAM?

A aqui começa a parte que mais recordo de todo este desenvolvimento.

Continua na parte 2...

Sem comentários:

Enviar um comentário