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 é a parte esquerda do placar onde aparecem os gráficos e animações.
  Se podemos armazenar 30 telas, podemos também criar pequenas animações. Vamos ver como fazer isso a seguir.

  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).
  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, seguindo a mesma ordem acima:
+--------------------------------+
| 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 Teixeira Silveira
Engenheiro de Sistemas e Computação - UERJ
Mestre em Engenharia de Computação - UERJ

© MarMSX 1999-2020