« Arquitetura do Mega Drive/Genesis (index)

Arquitetura do Mega Drive/Genesis

Chapter 4: Gráficos


Índice

  1. Por trás das múltiplas resoluções de exibição
  2. Organizando o conteúdo
    1. Memória disponível
  3. Construindo o frame
    1. Tiles
    2. Plano de fundo
    3. Primeiro plano
    4. Sprites
    5. Resultado
  4. Uma unidade de transferência dedicada
  5. Saída de vídeo

A resposta é Blast Processing! O que mais você precisa saber?

Ok, se você quer saber a verdadeira resposta: os gráficos são processados pelo 68000 e renderizados em um chip proprietário chamado Video Display Processor (VDP), o qual envia o quadro resultante (na forma de linhas de varredura) para exibição.

O VDP opera a ~13 MHz e suporta múltiplos modos de resolução dependendo da região: até 320x224 pixels em NTSC e até 320x240 pixels em PAL.

Por trás das múltiplas resoluções de exibição

Tecnicamente falando, o VDP pode acomodar tanto 40 ou 32 colunas de tiles (ladrilhos) por linha de varredura, e o número de linhas de tiles depende da região (28 no NTSC ou 30 no PAL) . No entanto, a maioria dos jogos PAL não se preocupa com os tiles extras permitidos em sistemas PAL (provavelmente porque precisam manter a consistência entre as duas regiões, e o NTSC é o denominador comum), então eles instruem o VDP a renderizar apenas 28 linhas (como fariam em sistemas NTSC). Assim, o VDP não tem opção se não preencher a área não utilizada com uma cor de fundo (também usada durante o overscan).

É possível ver quais jogos em PAL renderizam no modo NTSC verificando o Mode Set Register #2 em um emulador com recursos de depuração (por exemplo, o Exodus). Se o quarto bit contando da direita for 0, então o VDP está sendo executado no modo NTSC .

Image
Para fornecer um modo dois jogadores de forma rápida no Sonic 2 (1992), o jogo ativa o 'modo entrelaçado' para renderizar um nível do modo um jogador usando blocos de 8x16 píxeis no lugar (juntamente com outras mudanças).

Image
Em contrapartida, o modo dois jogadores mais sofisticado de Sonic 3 (1994) usa de tiles de 8x8 píxeis que são diferentes dos encontrados nos níveis do modo de um jogador.

Além disso, há um parâmetro adicional que pode ser definido no VDP para empilhar dois tiles e formar mapas de 8x16, tratando-os como um único tile. Assim, dobrando a resolução vertical. No entanto, isso acaba reduzindo pela metade a taxa de atualização, pois os quadros agora são renderizados com entrelaçamento (um quadro renderiza as linhas de varredura pares, o próximo, as linhas ímpares, e assim por diante), sendo mais limitado em termo de funcionalidade. O modo dois jogadores do Sonic 2 é uma boa representação deste modo .

Por fim, vale ressaltar que o VDP cuida automaticamente da adição de preenchimento para a área de overscan, para que os jogos não precisem se preocupar com quais áreas são seguras para desenhar gráficos (como acontecia com as "zonas perigosas" do NES)

Organizando o conteúdo

Em termos de processamento gráfico, este chip tem dois modos de operação:

E quanto aos Modos do 0 ao III? Bem, esses pertencem ao ainda mais antigo SG-1000 e o Mega Drive não tem suporte para eles.

Uma nota interessante: fui informado posteriormente por um ex-desenvolvedor deste sistema que a estrutura de comando do Modo V (usado para controlar o VDP no jogo) herdou o projeto do TMS9918 (o famoso chip de vídeo usado no SG-1000) . Isso facilitou para desenvolvedores third-party usarem o Modo V sem depender da documentação oficial (e dos subsequentes custos de licenciamento).

Memória disponível

Image
Arquitetura de memória do VDP.

O conteúdo gráfico é distribuído em três regiões de memória :

Construindo o frame

A próxima seção explica como o VDP desenha cada quadro, para fins de demonstração, o jogo Sonic The Hedgehog é usado como exemplo. Antes de começar, eu recomendo verificar o modus operandi de seu antecessor, já que muitos conceitos serão revisados aqui.

Tiles

Image
Múltiplos tiles comprimidos juntos. Para fins de demonstração, uma paleta padronizada é usada.

Image
Um único tile de 8x8 píxeis.

Alguns tiles encontrados na VRAM.

Assim como a PPU da Nintendo, o VDP é um mecanismo baseado em tiles, e como tal, usa tiles (bitmaps básicos de 8x8) para compor planos gráficos. No caso do VDP, cada tile é codificado com um vetor de 4 bytes de comprimento, onde cada entrada de 4 bits corresponde a um píxel e seu valor corresponde a uma entrada de cor (apontando para uma paleta de cores).

Os cartuchos de jogo armazenam os tiles em sua ROM (encontrada no próprio cartucho), porém eles precisam ser copiados para a memória VRAM para que o VDP possa lê-los . Tradicionalmente, isso só era possível durante intervalos de tempo específicos e era manuseado pela CPU, mas felizmente, o console possuí circuitos especiais para transferir essa tarefa para o VDP (entraremos em detalhes mais adiante).

Tiles são usados para construir um total de quatro planos que, uma vez mesclados, formam o quadro visto na tela. Além disso, para os tiles dos planos que se sobrepõem, o VDP decidirá qual tile será visível com base no tipo de plano e no valor de prioridade do tile.

Plano de fundo

Image
Mapa de plano de fundo alocado.

Image
Mapa de plano de fundo alocado com área selecionada marcada.

O plano de fundo, também conhecido como Plano B, é um tilemap (conjunto de tiles) rolável contendo tiles estáticos .

Esse plano pode ter seis dimensões diferentes: 256x256, 256x512, 256x1024, 512x256, 512x512, 1024x256. Os programadores podem selecionar a dimensão que melhor se adapta ao tipo de rolagem necessária.

Cada tile pode ser virado horizontal e/ou verticalmente e ter uma prioridade definida.

No exemplo mostrado, você nota que a área selecionada para exibição não é um quadrado... Não precisa ser!. O VDP permite configurar valores de rolagem horizontal para todo o quadro, cada linha de varredura individual ou a cada oito píxeis. Isso significa que os desenvolvedores podem moldar a área selecionada como um losango e alterar seus ângulos à medida que o jogador se move para simular efeitos de perspectiva. Truques como este não corrompem o plano, o VDP busca cada linha horizontal (selecionada) e constrói um quadro regular a partir dela.

Primeiro plano

Image
Primeiro plano alocado.

Image
Primeiro plano alocado com área selecionada marcada.

Exemplo de primeiro plano, o plano janela não é usado.

O primeiro plano, também conhecido como Plano A , possui as mesmas propriedades do plano de fundo, exceto que ele tem uma prioridade mais alta, consequentemente, os tiles renderizados aqui estarão inerentemente em cima do plano de fundo.

Além disso, este plano permite se dividir para formar um novo sub-plano: o plano janela. A única diferença é que este plano não se move durante a rolagem.

Em resumo, é possível ver que os novos valores de prioridade e planos separados permitem aos game designers produzirem novos tipos de cenários. Além disso, usando diferentes velocidades de rolagem em cada plano, um efeito de paralaxe pode ser realizado.

Sprites

Image
Camada de sprite alocada.

Image
Camada de sprite alocada com área selecionada marcada.

Neste plano, tiles são tratados como sprites. Eles são posicionados em um mapa de 512x512 píxeis e apenas uma parte dele (a resolução de saída do VDP) é selecionada para exibição. Isto é conveniente para ocultar sprites indesejados ou preparar outros que serão mostrados no futuro. O VDP também fornece uma antiga função de detecção de colisão.

Os sprites são formados pela combinação de até 4x4 tiles (mapa de 32x32 píxeis) e selecionando até 16 cores (incluindo transparência). Se for necessário um sprite maior, vários sprites podem ser combinados em um.

Pode haver no máximo 20 sprites por linha de varredura e 80 por tela (mais do que isso corromperá toda a camada).

A região na memória VRAM onde os sprites são definidos é chamada de Sprite Attribute Table (Tabela de Atributos de Sprites) e cada entrada contém o índice do tile, as coordenadas da camada (x e y), o valor link (gerencia quais sprites são desenhados primeiro), a prioridade (o sprite com a maior prioridade é o que será exibido em cima dos demais caso haja sobreposição), o índice da paleta de cores e o flip vertical e horizontal.

Resultado

Image
Quadro resultante.

Image
Quadro transmitido para a TV (formato NTSC), o VDP automaticamente cobre o quadro com uma área de overscan que a maioria das TVs CRT escondem.

Tan-ran!

Enquanto o quadro está sendo desenhado, o sistema chamará sequencialmente diferentes rotinas de interrupção, dependendo de onde o feixe do CRT está apontando. Como você provavelmente já viu em consoles anteriores, isso permite que a CPU trabalhe no próximo quadro (ou altere o quadro atual).

Convencionalmente, existem dois tipos de interrupções, chamadas: H-Blank (a cada linha horizontal) e V-Blank (a cada quadro).

O H-Blank é chamado várias vezes, mas é limitado a executar rotinas curtas. Além disso, somente memórias CRAM e VSRAM são acessíveis, então os jogos só podem atualizar suas paletas de cores ou rolar verticalmente suas camadas.

O V-Blank permite rotinas mais longas com a desvantagem de ser chamado apenas 50 ou 60 vezes por segundo (dependendo da região do console), mas consegue acessar toda a memória.

Observe que a área de overscan no exemplo exibe alguns pontos coloridos aleatórios no canto inferior direito. Isso é popularmente conhecido como CRAM dots e acontece porque a CPU está atualizando as paletas na memória CRAM ao mesmo tempo que o VDP está enviando as linhas restantes do feixe (no exemplo, isso acontece durante o overscan). Este conflito faz com que o VDP use qualquer valor que a CPU esteja escrevendo naquele momento (ao contrário do local necessário no CRAM), então a imagem acaba corrompida. No entanto, como neste caso o jogo só atualiza a memória CRAM durante o overscan, essa anomalia passa despercebida nos televisores CRTs tradicionais. Outros jogos tentam atualizar as paletas no meio do quadro para obter mais cores, com o custo de ter que equilibrar a aparição de CRAM dots.

Uma unidade de transferência dedicada

Até agora, discutimos o que a CPU pode fazer para atualizar quadros, mas e quanto ao VDP? Ele fornece algo mais especializado? Bem, sim, este chip apresenta um Direct Memory Access (Acesso direto à memoria, ou DMA) que permite mover dados entre locais de memória a uma taxa mais rápida e sem a intervenção da CPU.

O DMA pode ser ativado durante o H-Blank, o V-Blank ou o estado ativo (fora de qualquer interrupção), e pode ser usado para escrever nas memórias VRAM, CRAM e/ou VSRAM . Além disso, durante as transferências da memória RAM da CPU usando o DMA, o barramento da CPU é bloqueado, então é essencial um bom planejamento para alcançar um desempenho adequado.

O uso excepcional desses recursos pode fornecer gráficos de alta resolução, rolagem de paralaxe fluida e altas taxas de quadros. Ademais, seu jogo também pode ser apresentado em comerciais de TV com muitos slogans de Blast Processing! por toda parte.

Saída de vídeo

A primeira revisão deste console (comumente referida como Model 1) possui a mesma porta de saída de vídeo do Master System. Os subsequentes Modelo 2 e Modelo 3 mudaram para uma porta mini-DIN. É importante lembrar que isso se refere às revisões Norte-Americanas, já que os modelos da TecToy usam denominações diferentes.


Previous: 3. CPU

Next: 5. Áudio


Rodrigo Copetti © 2026 RSS Feed

Mudar para a edição moderna

Início · Artigos · Suporte · Sobre o autor · Sobre o site