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 possui 768 posições com dois bytes cada, totalizando 1536 bytes. Cada valor do mapa contém um ponteiro genérico para as posições de memória, 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 |
+-------+-------+-------+-------+
| 00 80 | 08 00 | 10 80 | 18 00 |
+-------+-------+-------+-------+
|    quadro 1   |   quadro 2    |
  O bit de quadro está sinalizado em vermelho.

  Já o programa "map 2" insere um display entre o carregamento de cada bloco 8x8, sem utilizar o conceito de quadros.
  Os programas são compatíveis, isto é, os mapas funcionam em qualquer um deles.

  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-2021