quinta-feira, 3 de julho de 2014

Problemas de sincronia na atualização de tela

Notei um problema que surge quando se usa fontes muitos grandes no ZX Scroll


A rotina de rolagem (scroll) é bastante lenta, portanto o que ocorre é que a exibição na TV ocorre antes que se complete a sua execução. Assim, na figura acima, a parte superior dos caracteres foi rolada em 1 pixel, enquanto a parte inferior continua com a posição anterior.

Uma forma de contornar o problema é diminuir o tempo de processamento, fazendo rolar uma região menor da tela. No exemplo abaixo, restringiu-se a rolagem em 12 colunas:



O vídeo abaixo permite visualizar essa falta de sincronia quando se rola 30 colunas, que é minimizada quando se restringe em 12 colunas:


O meu demo BR?-TK-HUE! também sofre bastante com esse problema:


A taxa de atualização de vídeo do TK90X é de 60 Hz e, como já foi visto antes, corresponde a um período de 59736 T. Portanto seria necessário que a tela estivesse pronta num tempo menor que esse. No caso do demo citado, há uma transferência de 6912 bytes (6¾ quilobytes).  A instrução mais rápida para se copiar bytes seria a dupla POP/PUSH, que pode transferir 2 bytes em 21 T; sem considerar as instruções para definir os endereços e laços, levar-se-ia pelo menos 72576 T para se copiar uma tela inteira. Mas a coisa ainda é mais complicada, pois uma tela teria que ser aprontada na pequena fração de tempo em que a ULA não está enviando a imagem para a TV. Concluindo, a obtenção de telas animadas no TK90X não é algo trivial.

Nenhum comentário:

Postar um comentário

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