segunda-feira, 9 de março de 2015

Autor do Sidewize e um truque para sincronização

Os leitores do Cantinho do TK90X podem estar preocupados com a falta de postagens, mas acreditem, estou bastante envolvido com o hobby. Para dar uma dica do que tenho feito, mostro este link. Mas o assunto que me fez escrever hoje é outro.


Eu estava pesquisando algumas coisas na web quando acabei encontrando o blog do Steve Wetherill, autor do shoot'n'up Sidewize, comentado sobre um truque de programação citado por Chris Smith. No assim chamado "Sidewize Test" durante desenvolvimento do Harlequim, um clone do ZX Spectrum, apresentou incompatibilidades com este jogo que resultava em gráficos cintilantes. O trecho do programa com o  problema era:
9CF4 LD BC,#40FF  ; Lê porta inexistente #40
9CF7 LD E,#40     ; Valor de atributo
9CF9 LD A,R       ; ?
9CFB IN A,(C)     ; Faz leitura da porta
9CFD CP E         ; Repete enquanto não for encontrado
9CFE JP NZ,#9CF9  ;o atributo #40 deixado pela ULA
9D01 RET          ; Fim da sub-rotina
Há uma leitura da porta #40FF que não existe no hardware do Spectrum. O truque aqui é que quando se lê uma porta inexistente, nenhum periférico responde a princípio, porém a ULA pode deixar no barramento o valor dos atributos de cores sendo manipulado naquele momento.

Um dos grandes problemas em animações nos computadores é que, quando está se atualizando o conteúdo da tela, pode-se acabar chocando com o instante em que justo aquela área está sendo enviada para o monitor/TV. Para evitar artefatos desagradáveis, deve-se evitar alterar a parte da tela que está sendo exibida no momento. O truque foi usado por Wetherill para saber o momento em que a ULA estava vasculhando uma certa posição de memória de vídeo e assim, poder acionar a rotina de animação no momento certo. O valor #40 (64) refere-se aos atributos bright 1, paper 0 e ink 0 que é essencialmente invisível; na tela do Sidewize, situa-se no limite entre a tela do jogo e a parte inferior com score e número de vidas.

O valor #40FF para a porta foi encontrado experimentalmente, mas o autor do jogo reconhece que não é compatível com todos os modelos de Spectrum, causando problemas em certos modelos (eu não me lembro de como era no TK90X, qualquer hora valia a pena conferir no meu computador).

Eu achei fascinante essa postagem de Wetherill sobre um jogo de sua autoria e, pelo jeito, ele não está enferrujado!

4 comentários:

  1. Postar pra mim tem sido difícil também.
    Eu mesmo tenho vários posts no rascunho e alguns completinhos que perdi por causa do "bug do undo" do blogger. É saco esse bug. Mas eu tenho que entrar no modo html para formatar o post de uma forma mais decente. E não é raro eu dar um ctrl+z no modo html e acabo perdendo todo trabalho. Por mais que eu me policie, eu esqueço. Aí desanimo, já que o meu tempo para jogar e resenhar é curto agora.
    Quanto ao jogo, eu desconhecia. E achei bem legal. Adoro os jogos com Jetpacks.
    Vamos em frente. Mesmo que devagar. :)
    Abraço.

    ResponderExcluir
    Respostas
    1. Não desanime, faça as coisas com calma.
      Quanto ao Sidewize, é muito bom para quem curte shoot'n'up.

      Excluir
  2. Nunca vi nada de bug ou instabilidade(visual) neste jogo no meu tk90x(se bem que já tinha o chaveamento de rom de spectrum na época, se me lembro bem).
    Bem joguei este jogo razoavelmente (pois este e o "Into the Eagle's Nest" foram e são os dois únicos jogos originais de Spectrum que tenho, minha mão trouxe de uma viagem pra Alemanha pelos anos 88a89, acho eu).
    Muito legal estes detalhes...vi tmb. a reportagem do site do Harlequin(ULA book) lá tem uma foto do bug nos clones(estrelas riscadas escorridas), bem não aparecia assim no meu tk90x era normal só um pouco rápido(coisas comuns no tk90x em relação ao speccy visto os 60Hz com alguns jogos, pior foi no Airwolf quase impossível...kkk).
    Valeu mestre, informações novas e legais sobre o Speccy sempre nos alegram...

    ResponderExcluir
    Respostas
    1. Valeu pelas informações, Oscar. Não me lembro muito desse jogo, vou ver se experimento jogá-lo novamente.

      Excluir

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