Obrigado a Julio Marchi pelo espaço cedido na MSX All
 

Screen 2 Show

  Crie displays animados de tela para a screen 2 do MSX como no Graphos III.


Displays disponíveis
  A seguir são apresentados os displays criados para carregar uma tela na screen 2. Cada display acompanha o código fonte em Assembly, um programa em Basic para testar o algoritmo e o código fonte no formato "ASM" do Assemblador RSCII.

Display Descrição Fontes
  Direct - Carrega a imagem direto.
  Top-down - Carrega a imagem de cima para baixo.
  Left-right - Carrega a imagem da esquerda para a direita.
  Diagonal - Carrega a imagem em diagonal.
  Snail-in - Carrega a imagem de fora para dentro em caracol.
  Frame-in - Carrega a imagem de fora para dentro em quadro.
  Window blind - Carrega a imagem como persiana.
  Map - Código genérico para mapas de display.
  Map 2 - Código genérico para mapas de display.

  Autor: Marcelo Silveira
  Licença dos programas: GNU-GPL v. 3.x - http://www.gnu.org/licenses/gpl-3.0.txt.


  Para testar o algoritmo, rode a versão em Basic do programa que acompanha cada código. Ele se localiza ao final do arquivo "txt".
  Após rodar o programa, o código de display já estará na memória e pronto para rodar. Porém, para isso, você deverá limpar a memória do MSX através do comando NEW e utilizar o programa a seguir.
10 SCREEN 2
20 DEFUSR=&HC000
30 X=USR(0)


  Displays através de mapa

  Talvez a maneira mais simples de se fazer displays é através de um mapa na memória RAM, contendo a ordem de aparição dos blocos de 8x8. Dessa forma, o trabalho se resume a ordenar os blocos que deverão aparecer na tela.
  O mapa representa 768 blocos de 8x8 pixels com dois bytes cada, totalizando 1536 bytes. Cada valor do mapa contém um ponteiro genérico para as posições de memória, no padrão de 1x8 pixels, começando por 0 e variando de 8 em 8.
  O mapa é colocado logo após o código genérico de display para mapas "map" ou "map 2" (vide acima), na posição fixa de memória &HC100. Então, o programa de display de mapas varre a região entre &HC100 e &hC6FF em busca dos blocos a preencher na tela.

  Qual a diferença entre "map" e "map 2"?

  O programa "map" utiliza o conceito de quadros, no qual um delay é adicionado sempre que um quadro é detectado. O bit mais significativo do primeiro bloco de um novo quadro é setado para sinalizar a mudança de quadro.

  Exemplo:
+--------+--------+--------+--------+
| blc 1  | blc 2  | blc 3  | blc 4  |
+--------+--------+--------+--------+
| &H8000 | &H0008 | &H8010 | &H0018 |
+--------+--------+--------+--------+
|    quadro 1     |    quadro 2     |
+--------+--------+--------+--------+
  No exemplo acima, temos 4 blocos de 8x8 pixels, onde criamos 2 quadros, cada um com 2 blocos. Podemos ter quantos quadros quisermos e de qualquer tamanho cada, bastando sinalizar o primeiro bloco. O bit de quadro está sinalizado em vermelho.

  Já o programa "map 2" insere um display forçado entre o carregamento de cada bloco 8x8, ou seja, não verifica o bit de delay.
  Os mapas são compatíveis nos dois programas.

  Mapas de display disponíveis:

Display Descrição Mapa/Fontes
  Aleatório - Carrega blocos de forma aleatória.
  Xadrez - Carrega em forma de tabuleiro de xadrez.
  Bola - Carrega em forma de bola.
  Cruz - Carrega em forma de cruz giratória.
  Listras - Carrega através de listras horizontais.
  Diagonal 2 - Carrega em diagonal.
  Fecha vertical - Carrega por cima e por baixo.
  Fecha horizontal - Carrega pelos lados.
  Relógio - Carrega rotacionando pelo centro.

  Autor: Marcelo Silveira
  Licença dos mapas: GNU-GPL v. 3.x - http://www.gnu.org/licenses/gpl-3.0.txt.


  Os novos displays estão disponíveis a partir do MSX Viewer 5.2.


Marcelo Silveira
Engenheiro de Sistemas e Computação
Especialista em Processamento de Imagens e Inteligência Artificial
© MarMSX 1999-2024