1 pontos por GN⁺ 2024-07-30 | 1 comentários | Compartilhar no WhatsApp

Projeto do sistema de vídeo do Super Nintendo

O interior de uma TV no começo dos anos 90
  • O Super Nintendo gera saída de vídeo para um aparelho de TV padrão
  • A TV recebe transmissão analógica de TV (NTSC) por uma antena, capta o sinal por meio de um tuner e exibe a imagem em um CRT (tubo de raios catódicos)
  • A TV tem entrada auxiliar (AUX), e um aparelho de TV comum tem um conector composite (amarelo) para o sinal de vídeo e jacks dedicados (branco e vermelho) para o sinal de áudio estéreo
Como o CRT funciona
  • O CRT opera a 15kHz e desenha cerca de 15.000 linhas por segundo
  • Dentro do CRT há três canhões de elétrons, que sempre disparam elétrons para a frente, enquanto dois conjuntos de ímãs (vertical e horizontal) movem os elétrons para cima e para baixo e para a esquerda e para a direita
  • O CRT não tem pixels, e os elétrons disparados pelos canhões sempre atingem a faixa de cor correta
Como controlar o CRT
  • O CRT consome os sinais vermelho, verde e azul conectando-os a cada canhão de elétrons
  • Os sinais de sincronização (HSYNC e VSYNC) são enviados por um único fio branco, chamado de sincronização composta (CSYNC)
  • O CRT consome os sinais e tenta sincronizar os canhões de elétrons
Como o CRT desenha uma imagem
  • O CRT desenha linhas da esquerda para a direita
  • Quando recebe um evento HSYNC, ele volta para a esquerda da tela (X=0), e quando recebe um evento VSYNC, volta para o topo da tela (Y=0)
  • O CRT desenha linhas enquanto se move para a direita e se inclina para baixo
O ponto-chave para entender o CRT
  • O ponto central é entender que o canhão de elétrons se move para a direita da tela enquanto se inclina para baixo
  • Se o VSYNC ocorrer ao mesmo tempo que o último HSYNC, a linha será sempre desenhada na mesma posição da tela
  • Se o VSYNC ocorrer entre dois HSYNCs, as linhas serão desenhadas de forma cruzada
O que existe dentro de uma linha
  • O CRT é digital ao desenhar as linhas, mas o conteúdo dentro de cada linha é analógico
  • Os três canhões de elétrons são ligados diretamente aos fios RGB, e o sistema pode alterar livremente os sinais de cor
Como os sistemas da época lidavam com isso
  • Os projetistas do SNES precisavam fornecer um sinal que o CRT conseguisse processar
  • Era necessário seguir a especificação do sinal NTSC
  • Proporção de tela 4:3, 262,5 linhas por campo, 341,25 pontos por linha e frequência de campo de 59,94Hz
Tornando-se um engenheiro da Nintendo
  • Depois de entender como o CRT funciona, era preciso projetar o sistema de vídeo
  • Foi criado um modo progressivo usando 262 linhas, com meta de taxa de quadros de 59,94Hz
  • Para manter a proporção 4:3 com 350 pontos, seria necessário um dot clock de 5,496,498Hz
Resolvendo os problemas
  • Não era possível usar um dot clock de 5,496,498Hz
  • Era preciso usar um oscilador mestre para que os subsistemas trabalhassem a partir de divisores de frequência
  • Também era necessário resolver o problema do overscan
Introduzindo o overscan
  • Se o canhão de elétrons continuar disparando durante o reset horizontal ou vertical, surgem artefatos visíveis
  • A TV usa overscan na área da tela, exibindo a imagem um pouco maior
  • É necessário um intervalo para parar o canhão de elétrons após VSYNC e HSYNC
Escolha da resolução vertical no SNES
  • Os sistemas concorrentes usavam 224 linhas visíveis
  • A Nintendo dividiu as 262 linhas em 224 linhas visíveis e 38 linhas em branco
Escolha da resolução horizontal no SNES
  • Usando 262 linhas e um master clock de 21.47727MHz, obteve-se um dot clock de 5.3693175MHz
  • Com 341 pontos, chegou-se a uma taxa de quadros de 60.098Hz
Escolha do overscan horizontal no SNES
  • Dos 341 pontos, 256 são visíveis e 85 são usados como HBLANK
  • A proporção resultante é 8:7, gerando uma leve distorção
Modo de alta resolução: entrelaçamento
  • A resolução vertical pode ser dobrada para 448 linhas
  • Dobrar a resolução horizontal é mais difícil
PAL vs NTSC
  • Na Europa, usa-se PAL em vez de NTSC, e na França usa-se SECAM
  • O PAL usa taxa de quadros de 50Hz e 312,5 linhas por campo
  • A versão PAL do SNES usa um master clock de 17.7344750MHz
  • A resolução visível usa 224 linhas e 256 pontos, com taxa de quadros de 50.00697891Hz
Saída
  • O SNES converte o sinal de CRT para composite e S-Video
  • Pelo conector AV, ele fornece sinais puros de "RGB/CSync", sinal "Composite" e sinal S-Video

Resumo do GN⁺

  • Este texto explica o processo de projeto do sistema de vídeo do Super Nintendo, abordando o funcionamento do CRT e a forma de processamento dos sinais
  • Com base no entendimento do funcionamento do CRT e do processamento de sinais, ele explica as decisões de projeto do sistema de vídeo do SNES
  • O texto é útil para quem se interessa por projeto de hardware de consoles de videogame e ajuda a entender a história e o funcionamento da tecnologia CRT
  • Outros projetos com funcionalidades semelhantes incluem o Sega Genesis e o Neo-Geo AES

1 comentários

 
GN⁺ 2024-07-30
Comentários do Hacker News
  • 224 é divisível por 16, então combina bem com tilemaps no pipeline de renderização gráfica

    • CGA/EGA/VGA todos tinham um modo 320x200
    • O NES era 256x224, e o SNES também
    • Pac-Man no arcade era 288x224
    • Os clones de Pac-Man para PC sempre pareciam estranhos
    • Só fui entender depois de aprender os detalhes da máquina
    • Os pixels não eram quadrados na resolução do PC
    • Ao ver ports ou clones de Pac-Man, eu tentava descobrir o tamanho do mundo, dos tiles e dos sprites
  • 59,94Hz é um número estranho

    • A América do Norte e algumas outras regiões usam rede elétrica de 60Hz
  • A proporção de arte 8:7 pode ser vista em jogos de SFC/SNES portados para outras plataformas

    • As versões de PSX/Saturn/PC mantêm a arte original e adicionam padding para 4:3
    • Ao olhar screenshots da versão de Saturn, tudo parece um pouco magro demais
  • Nos jogos europeus, o VSYNC acontece a 50.00697891Hz, então eles rodam 17% mais devagar do que o pretendido

    • Fiquei decepcionado quando joguei Sonic the Hedgehog no Mega Drive pela primeira vez
    • Descobri a diferença de velocidade entre NTSC e PAL pelo YouTube
    • A música também soa horrível em PAL
    • DooM no SNES tinha uma área de imagem maior na versão NTSC
    • Eu era bom em Punch-Out no NES, mas se tivesse competido nos EUA teria perdido no primeiro round
  • Há um erro de digitação no TFA; a proporção 8:6 é igual a 4:3

    • Eu usava a saída RF para alternar entre o SNES e a antena da TV
  • A resolução de saída 256x224 (8:7) é expandida para uma imagem 4:3

    • A taxa de pontos do SNES é mais lenta do que a taxa de pixels quadrados do padrão ATSC
    • Os pixels são expandidos horizontalmente em 8/7, então a resolução 8:7 vira 64:49
    • 224*(4/3) = 298 pontos visíveis
    • 224*(7/6) = 261.33... é mais próximo dos pontos visíveis
  • Fico me perguntando se existe algum emulador que simule com precisão a aparência de um CRT

    • Com shaders de GPU, isso deve ser viável em termos de desempenho
  • Eu esperava algum insight sobre como isso moldou designs de jogos icônicos

    • Eu adorava o SNES, mas não consegui convencer meus pais
    • Obrigado por escrever isso. Foi muito interessante