quarta-feira, 11 de junho de 2014

Editando telas no ZX Paintbrush (parte 1)

O demo BR?-TK-HUE! resultou de um exercício para exibir figuras coloridas de dimensões maiores que o da tela do TK90X. Não digo que fui inteiramente bem sucedido, pois há problemas que causa cintilação na tela, o que me obriga a repensar sobre temporização. 

Entretanto o assunto principal desta postagem é sobre a elaboração de tais figuras, feita no ZX-Paintbrush, e a forma empregada para incorporar no programa assembly


A figura original do TK90X, de autoria de Leonardo Suárez em formato JPEG, foi tratado primeiro no Gimp para diminuir o número de pixels e de cores. Depois foi importado para o ZX-Paintbrush, como se pode ver na figura acima. Há diversas opções de importação e parâmetros a ajustar, escolhas que podem ser auxiliadas pela janela de preview da imagem após processamento.



Nem tudo fica perfeito ao se importar a figura, mas os eventuais retoques podem ser feitos no próprio editor de imagens. Uma vez pronta, como fazer para passar a figura para o TK90X? A princípio, o aplicativo permite salvar em formato de tela do TK90X de extensão .SCR, que pode ser importado por um emulador. Porém a figura acima é bem maior que o padrão de 32×24 caracteres ou 256×192 pixels: é formado por 37 linhas de 57 colunas. 


O ZX-Paintbrush apresenta um recurso muito útil neste caso que é poder exportar a figura em diferentes formatos, inclusive em código fonte assembler (arquivo com extensão .asm). Uma amostra de arquivo .asm é mostrada na figura acima, a qual foi ligeiramente modificada antes de ser incluída no código do demo. Depois de montado por um utilitário assembler, o código acima produzirá uma sequência de bytes representando a figura. São dispostos sequencialmente os padrões de bits (bitmap) de cada linha de pixels e, ao final, os dados correspondentes aos atributos de cores.

Uma rotina própria é necessária para exibir tais figuras na tela do TK90X, como a que elaborei. Como a figura não pode ser exibida de uma vez, foi posta a se deslocar freneticamente na tela.  Esta rotina pode ser vista no código fonte do demo, mas não é perfeita, ainda preciso aperfeiçoá-la.

Obs: continua na parte 2

Nenhum comentário:

Postar um comentário

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