Ao jogar o NES, os personagens do jogo às vezes piscam. Por quê? Chama-se “sprite flicker” e não há nada de errado com o seu NES. 

Parte do charme dos jogos retrô são as peculiaridades da tecnologia inicial. Neste caso, a capacidade limitada da PPU (Picture Processing Unit). 

O NES foi construído em torno de um processador (o chip principal, ou “cérebro” do sistema) chamado MOS 6502 . 

Introduzido em 1975, ele impulsionou a explosão de computadores domésticos e sistemas de videogame que aconteceu no final dos anos 70 e nos anos 80. 

Era o coração não apenas do NES, mas do Atari 2600, do Apple II e do Commodore 64 (também estava nos computadores VIC-20 e PET da Commodore). 

O 6502 era tão popular porque estava em um ponto ideal de preço e desempenho, chegando a menos de 1/6 do custo de chips semelhantes de outros fabricantes.

Por mais elegante que o 6502 fosse na época, é um processador de 8 bits (também conhecido como chip de 8 bits), e foi a razão pela qual eles foram chamados de máquinas de 8 bits. 

Os computadores falam “binário”, ou seja, apenas 1s e 0s. Cada 1 ou 0 é chamado de “bit”. Assim, a informação é armazenada, movida e processada em bits. 

Na contagem normal (decimal), as “colunas” em um número de vários dígitos são: unidades, dezenas, centenas, milhares, etc… de modo que 57 são 7 unidades e 5 dezenas. Cada lugar que se move para a esquerda tem um valor 10 VEZES MAIS que o da direita. 

Em binário, cada coluna é apenas DUAS VEZES MAIS do que a da esquerda, então são 1s, 2s, 4s, 8s, 16s, etc. nosso sistema de contagem decimal normal (1 um, 1 dois, 1 quatro, 1 oito, 1 dezesseis, 1 trinta e dois, 1 sessenta e quatro e 1 cento e vinte e oito = 255). 

Um processador de 8 bits pode mover coisas para processamento em pedaços de 8 bits – que só pode trabalhar com pedaços cujo valor varia entre 0 e 255,

Uma série de 8 bits também é chamada de byte. Mais sobre isso em um segundo.

O NES PPU e memória limitada

Em comparação, um Samsung Galaxy S7 tem um chip de 64 bits, com 8 núcleos diferentes (em oposição ao 1 núcleo que o 6502 tinha). 

Também é MUITO mais rápido, com 4 núcleos rodando a 2.300.000.000 (2 bilhões, 300 milhões) de ciclos por segundo e 4 núcleos rodando a 1.600.000.000 (um bilhão, 600 milhões) de ciclos por segundo. 

Por outro lado, o 6502 no NES executa um único núcleo a 1.790.000 (um milhão, setecentos e noventa mil) ciclos por segundo. Então o NES rodava MUITO mais devagar, tinha apenas um núcleo, e tinha que mover dados em pedaços de 8 bits (valores entre 0 – 255), contra um celular nem mesmo atual de hoje, que além de sua velocidade e 8 núcleos trabalhando juntos ao mesmo tempo, move os dados em pedaços de 64 bits (valores entre 0 – 18.446.744.073.709.551.616 – isso é dezoito quintilhões, quatrocentos e quarenta e seis quatrilhões, setecentos e quarenta e quatro trilhões, setenta e três bilhões, setecentos e nove milhões, quinhentos e cinquenta e um mil, seiscentos e dezesseis). 

Isso é muito menos feito com cada passagem de volta no dia de 8 bits.

Agora não só os processadores eram caros, mas a memória (RAM, ou Random Access Memory) também era. 

Isso significava que o processador gráfico no NES (a unidade de processamento de imagem , ou PPU ) tinha uma área total de trabalho (capacidade completa de RAM) de 2K, ou 2 Kilobytes, ou 2.000 bytes.

Para visualizar isso, entenda que um único caractere de texto – apenas uma letra – normalmente usa 1 byte. 

OK, então o que exatamente é um Sprite de videogame?

A Wikipedia diz que o termo “sprite” foi usado pela primeira vez em referência à computação gráfica na Texas Instruments. 

Seguindo a longa tradição de incorporar conceitos de literatura de fantasia em computadores (um subproduto da cultura geek, aparentemente), um engenheiro usou o termo “sprite” para se referir a um pedaço separado de informação de imagem que era capaz de flutuar no topo da tela principal.

Isso significa que, para fazer algo se mover na tela, esses pequenos pedaços de imagem independentes podem ser usados ​​com muita eficiência, em vez de ter que redesenhar tudo na tela para cada quadro de animação. 

Eficiência significa desempenho, o que significa melhor jogo.

Quanto à conexão de fantasia iluminada, sprites são criaturas míticas semelhantes a fadas. A ligação conceitual com algo pequeno que magicamente flutua dentro de uma cena faz sentido, então. Agora você sabe, e pode impressionar seus amigos.

Quantos sprites podem dançar na cabeça de um NES PPU?

Mas espere – há menos! Enquanto a Unidade de Processamento de Imagem do NES tem um total de 2K (2.046 para ser exato) bytes de RAM, ela tem apenas 256 bytes de armazenamento para sprites – as pequenas peças gráficas usadas para fazer nossos itens animados na tela. 

Isso não é muito. No mundo do jogo, isso significava 64 gráficos de sprite de 8X8 pixels – o quadrante superior esquerdo separado aqui desta folha de sprite de Super Mario:

Embora a PPU possa conter 64 sprites, ela é ainda mais limitada pelo fato de que apenas 8 sprites podem existir juntos em uma linha de varredura de TV, devido à forma como o espaço de memória está configurado. Uma linha de varredura é uma linha horizontal de pixels na imagem em tela cheia que o NES envia para a TV.

Tenha em mente que um sprite e um personagem na tela não são a mesma coisa. Sprites são peças gráficas de 8 por 8 pixels que podem ser animadas e flutuadas separadamente “na frente” do plano de fundo.

 Um bom exemplo para demonstrar a distinção é que Mario, de Super Mario Bros, tem 16 pixels de largura por 32 pixels de altura, necessitando de um total de 8 sprites para colocá-lo na tela. Sentindo o aperto ainda?

Então, como Mario tem 2 sprites de largura, qualquer scanline em que ele estiver já terá 2 sprites. Adicione alguns outros sprites animados e você rapidamente atingirá seu teto de 8 para uma linha de varredura.

Sprites lotados têm que se revezar

O hardware não pode mostrar nada além de 8 sprites em uma linha de varredura, então não mostra. No entanto, se os desenvolvedores de jogos deixassem isso acontecer, seu personagem, um cara mau, ou parte dele, simplesmente desapareceria. Puf. Ele ainda está lá, mas totalmente invisível. 

Obviamente, isso criaria sérios problemas de jogo, então programadores inteligentes de videogame chegaram a um compromisso. Eles rastreiam todos os sprites que devem aparecer em uma determinada linha de varredura e trocam entre eles:

  • QUADRO 1: mostre sprites 1-8 de 10
  • QUADRO 2: mostre sprites 2-9 de 10
  • QUADRO 3: mostre sprites 3-10 de 10
  • QUADRO 4: mostre os sprites 1 e 4-10 de 10
  • QUADRO 5: mostre sprites 1-2 e 5-10 de 10

Dessa forma, os sprites que ficam invisíveis continuam mudando, então você tem uma espécie de blecaute contínuo de 2 sprites (neste caso, 10 compartilhando uma linha de varredura) para cada quadro de animação na tela, em vez de um blecaute total em qualquer coisa além de 8. O resultado é a cintilação familiar que você já viu.

Da próxima vez que você jogar, observe quando sprites cruzando em scanlines ocupados começam a piscar. Observe como a cintilação fica mais pesada à medida que uma linha de varredura fica mais ocupada e a lista de sprites além de 8 cresce. 

Observe que essa oscilação intensa ocorre apenas em alguns casos especiais, pois os desenvolvedores de jogos foram muito cuidadosos para minimizar a oscilação o máximo possível. 

Não é um comportamento ideal e faz com que a realidade simulada se desfaça, parecendo menos sólida. Observe também como os jogos costumam manter os sprites separados uns dos outros, para que não compartilhem scanlines – como os itens animados em diferentes plataformas na mesma tela em um jogo de “plataforma” como Super Mario Bros.

Agora você entende a limitação e os truques inventivos de fumaça e espelhos usados ​​para escondê-los. Feliz jogo!

Deixe seu comentário!Cancelar resposta

error:
Sair da versão mobile