Entrando no MSX 2: bitmap em SCREEN 5, 7 e 8
O MSX 2 substitui a tabela de tiles por um bitmap contínuo de 16 ou 256 cores. O CrossScript herda todos os comandos que você já conhece — e abre a porta para telas em alta resolução.
1. Um novo VDP: o V9938
O MSX 2 troca o VDP TMS9918 do MSX 1 pelo V9938, que traz três novidades essenciais:
- Modos bitmap de verdade: cada pixel é uma cor, sem restrição de "duas cores por linha".
- Blitter (VDP Command Processor): copia, preenche e move retângulos de VRAM sem gastar CPU.
- Páginas de VRAM: você desenha numa página escondida e mostra outra — a base do page flipping (capítulo 20).
O CrossScript ativa tudo isso apenas com o USES e o SCREEN corretos.
2. Os três modos bitmap que você usa
| Modo | Resolução | Cores | Uso típico |
|---|---|---|---|
SCREEN 5 | 256×212 | 16 (por pixel) | Jogos, cenários, HUD colorido |
SCREEN 7 | 512×212 | 16 (por pixel) | Telas de menu em alta res |
SCREEN 8 | 256×212 | 256 fixas | Imagens fotorrealistas |
Modos 6, 10, 11 e 12 existem mas não são o foco deste volume.
USES SCREEN 5
SCREEN 5
COLOR 15, 4, 4 ' texto branco, fundo azul, borda azul
CLS
ATENÇÃO
SCREEN 5 usa 32 KB de VRAM por página
Uma tela SCREEN 5 completa (256×212) ocupa cerca de 27 KB. O V9938 tem 128 KB de VRAM, então cabem 4 páginas — mas embutir uma imagem inteira dentro do cartucho estoura os 64 KB do formato "Normal". Para telas grandes, use PAGELOAD com o compactador LZB (capítulo 21) e ative a Mapper (capítulo 26).
3. Desenhando pixel a pixel: PSET e LINE
PSET x, y, cor acende um pixel; LINE x1, y1, x2, y2, cor desenha uma linha reta. As duas escrevem direto na VRAM via blitter.
DIGITE E VEJA
Programa 19.1 — Estrelas aleatórias
USES SCREEN 5, RANDOM, PAINT
SCREEN 5
COLOR 15, 1, 1
CLS
DIM i AS WORD
FOR i = 1 TO 200
PSET RND(256) - 1, RND(212) - 1, RND(15)
NEXT i
INPUT$(1)
4. Tiles coloridos em SCREEN 5
O SCREEN 5 é bitmap: não existe tabela de nomes de tiles como no SCREEN 1. Mesmo assim, o CrossScript mantém TILECREATE / TILE para você — internamente, um cache oculto guarda os padrões e o blitter copia cada bloco 8×8 para a tela. Você desenha em coordenadas de tile (coluna 0..31, linha 0..25) exatamente como no MSX 1.
A grande diferença é a cor: cada pixel do tile pode ter uma das 16 cores da paleta, e a cor 0 pode ser tratada como transparente.
TILECOLOR 0, 15, 1 ' branco sobre preto (frente=15, fundo=1)
TILETRANSPARENT ON ' cor 0 = recorte (útil para árvores, herói etc.)
TILECREATE 5, $18,$3C,$7E,$FF,$FF,$7E,$3C,$18
TILE 10, 12, 5
Para o exemplo completo de cenário com montanhas e árvores recortadas, veja o Programa 14.1 no capítulo 14.
4.1 Tamanho do texto: BPRINT SIZE
Em SCREEN 5 o texto do BPRINT usa a fonte 8×8. Para deixá-lo maior, use BPRINT SIZE n — cada pixel da fonte passa a ocupar n×n pixels na tela. Os valores válidos são 1 a 7 (1 = tamanho normal, padrão).
USES SCREEN 5, BPRINT
SCREEN 5
CLS
BPRINT SIZE 3
BPRINT 2, 2, "MSX BRASIL", 15, 4 ' letras 24x24
BPRINT SIZE 1
BPRINT 2, 20, "placar: 0000", 15, 4
O comando é um estado: vale para todos os BPRINT seguintes até você mudá-lo. As coordenadas continuam em células de 8×8, e é sua responsabilidade deixar espaço para o texto ampliado (uma letra em SIZE 3 ocupa 3 colunas e 3 linhas).
5. Trazendo imagens do PC: o Graphics Studio
A IDE traz o Graphics Studio (aba Arquivo → Nova imagem ou botão direito no projeto). Ele importa PNG/JPG, converte para a paleta MSX 2 e exporta como um asset PAGELOAD compactado. Antes de importar, o painel de ajustes permite:
- Fit mode — como enquadrar (Fit, Fill, Stretch, Center).
- Resampling quality — bicúbico multi-etapa para downscale suave.
- Ajustes de imagem — brilho, contraste, saturação, gama e nitidez.
- Modo de cores — paleta fixa (16 cores para SCREEN 5) ou paleta customizada por quantização.
O botão Exportar como PAGELOAD gera um snippet pronto (com MEMORY AUTO, MAPPER e o header CSX5/CSX6) que você cola no seu programa. A IDE escolhe o codec de menor tamanho — RLE ou LZB — automaticamente.
DICA
O nome do asset é o rótulo do PAGELOAD
Ao exportar, dê um nome curto (ex.: titulo, fase1). Esse rótulo é o que você passa para PAGELOAD: PAGELOAD titulo.
6. Snippet mínimo em SCREEN 5
USES SCREEN 5, TILES
SCREEN 5
COLOR 15, 4, 4
CLS
' ... desenhe / carregue / anime aqui ...
Fim: GOTO Fim
O Fim: GOTO Fim é o loop infinito de fechamento — sem ele o programa "sai" da rotina principal e a tela some.
7. Resumo do capítulo
- MSX 2 usa o V9938 com blitter, páginas e modos bitmap.
SCREEN 5(16 cores) é o modo canônico para jogos MSX 2.PSETeLINEescrevem pixels diretamente via blitter.TILECREATE/TILEcontinuam funcionando (via cache oculto) com cor real e transparência opcional.- Use o Graphics Studio para importar imagens do PC — ele já gera o
PAGELOADcompactado. - Uma tela cheia ocupa ~27 KB; para embutir no cartucho use LZB + Mapper (capítulos 21 e 26).