Curiosidades

Curiosidades Técnicas:


  • Qual a parte mais complicada da adaptação? (por Daniel Caetano)
    • A parte mais chata da adaptação foi identificar como raios o jogo funcionava; os arquivos de fita eram lidos seqüencialmente, mas o jogo pede freqüentemente a fita seja rebobinada. Em um lugar especial (portão final da fase 2) eu demorei a entender que estava voltando para a fase 1 porque o portão estava me matando. Fora este detalhe do carregamento puramente seqüencial, sem verificações, as rotinas de acesso à fita são idênticas às do Altered Beast, o que facilitou muito esta parte.

      Outra parte bastante chata está sendo identificar em que partes o jogo tem bug (já presentes no spectrum). O código do jogo é bastante confuso, algo incomum para jogos de MSX e Spectrum.


  • Por que o jogo é tão lento, mesmo em ZX Spectrum? (por Daniel Caetano)
    • A explicação mais direta é... porque o jogo é mal programado? Acredito que sim. O jogo usa uma espécie de script de fase (em especial para o cenário) o que certamente diminuiu os tempos de carregamento... entretanto, isso, associado ao jogo querer usar scroll suave e do uso de framebuffer (sem outs diretos para a VRAM), fez com que, mesmo em preto-e-branco, o deslocamento fosse infinitamente pior que o do Astro Marine Corps, por exemplo, que também tem scroll parallax e é todo colorido.


  • Se o jogo é tão ruim, por que gastar tempo com a adaptação? (por Daniel Caetano)
    • Karateka nunca foi um jogo que me agradou, em nenhuma versão. Entretanto, em outros computadores era um jogo bonito, o que não ocorre no Spectrum e, por conseqüencia, no MSX.

      Entretanto... Eu acredito que os erros do passado não devem ser esquecidos, mas sim rememorados para que não se repitam. Tempo perdido não foi a adaptação para disco, que tem fins didáticos, mas sim a criação de tal aberração. A lição que fica é: versões ruins de um jogo deviam ser abortadas e nunca lançadas. A própria empresa que fez o Karateka no Spectrum aprendeu, e nunca lançou um Prince of Persia (que, se fosse no mesmo esquema deste Karateka, seria uma vergonha para o sistema). Isso permitiu que, anos mais tarde, um grupo de bons programadores se interessassem em fazer uma versão decente do mesmo (PoP para Spectrum 128) que, infelizmente, ainda não foi portada para MSX.


  • Por que o jogo trava em algumas ocasiões? (por Daniel Caetano)
    • Sinceramente, é um mistério. Ele trava igualmente na versão Spectrum e creio que, por tanto, exista uma falha na lógia de programação em algum ponto. E o jogo não é exatamente uma maravilha que faça valer apena procurar qual é essa falha.

      Ainda assim, eu fiz um esforço e encontrei alguns destes bugs. Eram bugs de dados e eu simplesmente fiz um patch para corrigir. Entretanto, ainda é bem possível que existam outros mais obscuros, que obviamente vão ficar como estão.


  • Por que o jogo não atualizava as cores da barra de energia? (por Daniel Caetano)
    • Porque o programador esqueceu do fato durante a conversão pro MSX. O jogo atualizava a sua tabela de cores (na RAM), mas o programador não se importou de jogar estes dados para a VRAM quando necessário.


  • Por que a interrupção do jogo estava "meio" desativada? (por Daniel Caetano)
    • Bem... "meio" desativada porque vez ou outra ela era chamada, mas ao sair, o jogo simplesmente fazia um RETI, sem re-habilitar as interrupções... e aí o jogo passava a maior parte do tempo sem executar essa rotina.

      Como resultado de desligar a IRQ, o jogo não lia teclado nem tocava a música; para consertar isso, o autor da versão original colocou chamadas para a rotina de música em trezentos lugares diferentes, fazendo com que a música se acelerasse em computadores mais rápidos (porque não era temporizada).

      Os controles, por sua vez, eram lidos apenas em um momento do código, o que fazia com que a resposta do jogo aos comandos do jogador fossem horríveis.

      Ao religar a interrupção (e desligar essas outras chamadas espalhadas pelo jogo), tudo melhorou, menos a velocidade, que caiu um pouco (isso explicaria a razão do autor ter tirado fora a IRQ). Entretanto, com algumas otimizações aqui e ali foi possível reverter a piora, fazendo com que o jogo tivesse seu desenvolvimento bastante melhorado, ao menos em MSX2 ou superiores com turbo.

      Mas tudo isso foi efeito colateral. A razão pela qual eu busquei, de fato, ligar a Interrupção, foi permitir que a música do final do jogo pudesse tocar, tal qual ocorre no Spectrum.



    Curiosidades Não-Técnicas:


  • Quais as músicas que foram "tema" do desenvolvimento? (por Daniel Caetano)
    • "Master of Puppets" e "The Thing that Should Not Be", ambas do Metallica, álbum "Master of Puppets".


  • Qual era a alimentação durante o desenvolvimento? (por Daniel Caetano)
    • A adaptação foi feita em pouco tempo, à base de queijo provolone.


  • E a bebida oficial do projeto? (por Daniel Caetano)
    • Vinho... tinto e seco!


    Visitante #36878 desta página
    

    05/01/2008


    # Versão 1.0.2 liberada! Veja na página de Downloads!
    # Pequeno bug corrigido na rotina de loading.


    09/12/2007


    # Adicionada a versão do Karateka de GameBoy na seção Versões. Obrigado a Leandro Correia pelo aviso!


    08/12/2007


    # Primeira versão pública liberada! Veja na página de Downloads!
    # Adicionada a nova tela do final do jogo.
    # Re-habilitada a rotina de interrupção do jogo, o que permitiu que a música do fim do jogo pudesse ser tocada e a resposta aos controles fosse melhorada (e a música/áudio não acelerasse com a velocidade do micro).
    # Corrigidas as rotinas de vídeo para trabalharem corretamente com a IRQ ligada.
    # Pequenas otimizações nas rotinas de impressão de tela (economia de uns 700 ciclos de clock por impressão).
    # Otimização da impressão da barra de energia em MSX2 ou superiores (economia de uns 150 ciclos de clock por impressão).


    07/12/2007


    # Cores do placar corrigidas de acordo com o tamanho da barra de energia.
    # Corrigido o bug do travamento quando o jogo era terminado fora da última sala.
    # Agora, qualquer tecla pressionada durante a abertura do jogo faz pular direto para o jogo.
    # Corrigido um bug que fazia o jogo travar (ainda) quando o personagem é jogado pelo penhasco.
    # Revisada geral em todo o WebSite.