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


  Recriação do placar eletrônico do Estádio do Maracanã, Rio de Janeiro, no MSX 1 e screen 0.
Como foi feito o placar no MSX   O primeiro projeto começou ainda nos anos 90, através da criação de um placar simples feito em screen 0 do MSX 1. Esse placar foi personalizado para jogos de futebol de botão, jogo muito comum no Brasil. Ele marcava o tempo e apresentava os nomes das equipes, juntamente com o placar.
  Após desenvolver o projeto MSX Font Editor, aprendi a criar mosaicos na screen 0 do MSX utilizando a tabela ASCII. Dessa forma, com certas limitações, seria possível criar desenhos monocromáticos em um modo de tela do MSX que só é possível o uso de caracteres. Aqui, nem os sprites são permitidos.
  Depois de constatar que a screen 0 possui 12 KB de espaço livre, vislumbrei que essa área poderia armazenar até 30 telas de 17x3 caracteres, que correspondem às dimensões da parte esquerda do placar destinada às imagens. Com 30 telas, é possível também criar pequenas animações.

  Primeiramente, temos que criar os desenhos das telas. Hoje em dia podemos utilizar o PC para isso e depois criar um programa para converter a imagem monocromática para uma tela no formato da tabela de padrões de screen 2 (é o mesmo formato dos caracteres da tabela ASCII, mas não se esquecer que cada caractere ocupa 6x8 pixels na screen 0).
  O layout que usei possui 5 telas por coluna e 6 telas por linha. No gabarito que é fornecido aqui, basta desenhar qualquer coisa dentro de cada espaço delimitado e utilizar o programa de conversão.

  As telas serão carregadas na área livre de memória da screen 0, de 4096 a 16336.
  Cada tela possui 17x3 caracteres ou 102x24 pixels. A ordem de caracteres na memória é a seguinte:
+--------------------------------+
| 01 02 03 04 ... 13 14 15 16 17 |
| 18 19 20 21 ... 30 31 32 33 34 |
| 35 36 37 38 ... 47 48 49 50 51 |
+--------------------------------+

  Depois, reservamos 51 caracteres da tabela ASCII (de 200 a 250), onde a tela a ser exibida será carregada. A alteração do padrão dos caracteres ASCII é refletida imediatamente na tela do MSX. Porém, é necessário criar um programa em Assembly para realizar a cópia rápida da área de telas para a tabela ASCII.
  Na região do placar a ser desenhada a tela, utilizamos os caracteres de 200 a 250, correspondendo à mesma ordem dos caracteres armazenados na memória.
+--------------------------------+
| 200 201 ...                    |
|                                |
|                ... 248 249 250 |
+--------------------------------+

  A ilustração a seguir mostra como é feita a cópia de uma tela para a tabela ASCII.  
  O programa em Assembly criado recebe como parâmetro um número de 0 a 29, indicando a tela a ser exibida. Por exemplo:
X=USR(4)
  Irá carregar a tela 4 na região onde foram impressos os caracteres de 200 a 250.

  A ferramenta gif2dump converte uma imagem feita a partir do gabarito que o acompanha para o formato final. Basta carregá-la na screen 0 e depois utilizar o programa plamvsc.bin para mover as telas.

  A partir do projeto Digitized Sound Generator, pude converter e incluir também a voz locutor do Maracanã no placar.


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