Utilitários de tela e tempo: SCREEN, CLS, LOCATE, DELAY, COLOR
Comandos pequenos, presença gigantesca. São eles que dão ritmo ao jogo, organizam a tela e permitem escolher em que modo o MSX vai trabalhar.
1. SCREEN — escolhendo o modo de vídeo
O primeiro comando de quase todo programa CrossScript. SCREEN n reconfigura o VDP para um dos modos do MSX:
| Modo | Resolução | Cores | Uso típico |
|---|---|---|---|
SCREEN 0 | 40×24 texto | 2 | Editores, listagens |
SCREEN 1 | 32×24 texto colorido | 16 (2 por bloco) | Menus, jogos simples |
SCREEN 2 | 256×192 gráfico | 16 (2 por linha 8×1) | Jogos MSX 1 clássicos |
SCREEN 3 | 64×48 multicor | 16 | Efeitos, protótipos |
Modos 5–8 são MSX 2 e cobertos no Vol. 2.
ATENÇÃO
SCREEN limpa a tela
Todo SCREEN n faz um CLS implícito e reinicializa a paleta. Não chame SCREEN no meio do gameplay — use CLS se quiser só apagar.
DICA
SCREEN OFF e SCREEN ON — desenhar sem mostrar
SCREEN OFF apaga a imagem (rotina DISSCR da BIOS, &H0041) e SCREEN ON acende de novo (ENASCR, &H0044). Com a tela apagada você grava blocos, cores e nomes na VRAM sem que o jogador veja o "lixo" da montagem; ao acender, a tela aparece pronta. Use logo depois de SCREEN n e CLS, porque eles acendem a tela de novo. O Comboio Espacial faz isso na abertura, na tela do jogo e na tela final.
2. CLS — limpa tudo
CLS apaga a área visível e devolve o cursor para (0, 0). Rápido, indolor, essencial entre telas.
3. LOCATE — posicionando o cursor
LOCATE col, lin move o cursor de texto para a coluna e linha indicadas. O próximo PRINT começa dali.
DIGITE E VEJA
Programa 10.1 — HUD com placar
USES SCREEN 1
SCREEN 1 : CLS
DIM pontos AS WORD = 0
DIM vidas AS BYTE = 3
WHILE vidas > 0
LOCATE 0, 0 : PRINT "PONTOS: "; pontos; " "
LOCATE 22, 0 : PRINT "VIDAS: "; vidas
pontos = pontos + 1
DELAY 5
WEND
O truque de deixar espaços em branco no fim do PRINT (" ") é para apagar dígitos anteriores maiores. Sem isso, "1000" viraria "100" e sobraria o "0" antigo.
4. COLOR — cores de texto, fundo e borda
COLOR frente, fundo, borda — três valores de 0 a 15. Aplica-se ao próximo PRINT (frente e fundo) e à área ao redor da tela (borda).
SCREEN 1
COLOR 15, 4, 4 ' texto branco, fundo azul, borda azul
CLS
PRINT "TITULO"
A paleta MSX 1 é fixa: 0=transparente, 1=preto, 4=azul-médio, 6=vermelho-médio, 10=amarelo, 15=branco (ver tabela completa no apêndice).
5. DELAY — pausando o programa
DELAY n pausa por n frames de 1/60 s. É a forma canônica de dar ritmo ao jogo, porque bate com o VBLANK e não depende da velocidade da CPU.
| Chamada | Pausa aproximada |
|---|---|
DELAY 1 | 16 ms (1 frame) |
DELAY 30 | meio segundo |
DELAY 60 | 1 segundo |
DELAY 300 | 5 segundos |
DICA
DELAY vs loops vazios
Nunca use FOR i = 1 TO 10000 : NEXT i para esperar — a velocidade varia entre máquinas (MSX 1 turbo, MSX 2+). DELAY é sempre 1/60 s por unidade em qualquer MSX.
6. Um "quadro por frame" com DELAY 1
A receita para animação suave:
USES SCREEN 2, SPRITES, KEYBOARD
SCREEN 2
SPRITECREATE 0, $18,$3C,$7E,$FF,$FF,$7E,$3C,$18
DIM x AS BYTE = 100
WHILE STRIG(0) = 0
IF STICK(0) = 3 THEN x = x + 1
IF STICK(0) = 7 THEN x = x - 1
SPRITE 0, x, 90, 0, 15
DELAY 1 ' espera 1 frame — mantém 60 FPS estáveis
WEND
Sem DELAY 1 o jogo roda "o mais rápido possível" — o que em emuladores acelerados vira caos. Com DELAY 1, você trava em 60 FPS.
7. Resumo do capítulo
SCREEN nescolhe o modo — e limpa a tela.SCREEN OFF/SCREEN ONapagam e acendem a imagem.CLSapaga;LOCATEposiciona o cursor;COLORmuda cores.DELAY npausa por n frames — a unidade de tempo canônica do MSX.- Sempre termine o loop principal com
DELAY 1para gameplay estável em 60 FPS.