MSXInício
Capítulo 10Disponível

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:

ModoResoluçãoCoresUso típico
SCREEN 040×24 texto2Editores, listagens
SCREEN 132×24 texto colorido16 (2 por bloco)Menus, jogos simples
SCREEN 2256×192 gráfico16 (2 por linha 8×1)Jogos MSX 1 clássicos
SCREEN 364×48 multicor16Efeitos, 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.

ChamadaPausa aproximada
DELAY 116 ms (1 frame)
DELAY 30meio segundo
DELAY 601 segundo
DELAY 3005 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 n escolhe o modo — e limpa a tela. SCREEN OFF / SCREEN ON apagam e acendem a imagem.
  • CLS apaga; LOCATE posiciona o cursor; COLOR muda cores.
  • DELAY n pausa por n frames — a unidade de tempo canônica do MSX.
  • Sempre termine o loop principal com DELAY 1 para gameplay estável em 60 FPS.
Comunidade

Discussão · Utilitários de tela e tempo: SCREEN, CLS, LOCATE, DELAY, COLOR

Curta, marque como lido e comente o que achou deste capítulo.

0 comentários
Entre para participar
Crie uma conta ou faça login para curtir, marcar como lido e comentar.

Carregando comentários…