Podemos reviver Duck Hunt?



A maioria das pessoas se alegra quando consegue trazer coisas antigas de volta à vida. O desejo infinito de reviver a experiência da juventude nos leva de maneiras que há muito esquecemos. E no caminho, às vezes nos deparamos com lembranças esquecidas que evocam outras lembranças esquecidas que nos permitem reviver momentos felizes nos quais não pensamos há anos ou décadas. Alguém que volta para o ensino médio, para o carro noturno que anda com o volume do rádio ao máximo, retorna o rugido do motor Ford Windsor . Para aqueles nascidos nos anos 80 e 90, esses jogos podem acionar videogames. Quem pode esquecer a primeira reunião com um clipe de assistente do Microsoft Office, música elegante do Final Fantasy ou cima-para-baixo-baixo-esquerda-direita-esquerda-direita-ba-selecionar-iniciar ?

O progresso na tecnologia do processador nos permitiu passar novamente o tempo com nossos jogos favoritos por meio de emuladores - programas que emulam os processadores de computadores antigos. Os jogos são baixados dos chips ROM para os arquivos. Esses arquivos podem ser baixados no emulador e jogar o jogo como se você estivesse jogando no sistema original.


NES Zapper internals

A tecnologia é uma coisa maravilhosa. Ele nos permite avançar e fazer hoje o que era impossível ontem. No entanto, em alguns casos, esse paradigma está incorreto. Um deles é o console de jogos NES, o Nintendo Entertainment System e seu controlador de armas, Zapper. Ao mesmo tempo, o NES se tornou o console de jogos mais popular e por boas razões. Os engenheiros, programadores e especialistas em áudio da Nintendo geraram alguns dos melhores videogames já feitos. Infelizmente, alguns desses jogos não podem ser jogados no seu emulador Raspberry Pi favorito, pois o Zapper não é compatível com os monitores digitais modernos. É improvável que alguém possa esquecer como foi divertido interpretar Duck Hunt . Este jogo foi empacotado com todos os sistemas NES, então todos nós jogamos. Mas a nostalgia associada a ele é enterrada devido a características tecnológicas não resolvidas.

Vou lhe dizer, como hacker para hacker - isso não pode mais ser tolerado. Primeiro, veremos como o Zapper funciona e por que ele não funciona com displays digitais. E então vamos pensar em como corrigi-lo.

O problema


A pistola Zapper é apenas uma fotocélula com um interruptor. Quando o gatilho (interruptor) é pressionado, o NES realiza certas manipulações com a tela para entender para onde a arma está apontando. Quais - discutiremos um pouco mais tarde. Mas primeiro precisamos entender que eles só funcionam em TVs CRT analógicas. Se você conectar seu emulador a uma TV assim, não terá problemas. O problema é que ninguém tem uma TV CRT. Todos possuem TVs de tela plana digitais e monitores. Quando conectado a esse monitor, o jogo não funciona. Precisamos entender por que isso é assim.

Desmistificando Mitos


Há muita confusão sobre como a NES sabe para onde o Zapper está indo, mesmo entre pessoas que são um pouco versadas em eletrônica. Alguns deles consideram, e continuam a espalhar esse mito, que o NES lê linhas de varredura do CRT. Um CRT desenha linhas de varredura de cima para baixo na tela em intervalos regulares. Comparando a hora de início do desenho e a hora em que o Zapper vê a linha, o NES pode descobrir para onde o Zapper está apontando. E como o monitor moderno mostra todas as linhas ao mesmo tempo, é impossível calcular exatamente onde o Zapper aponta. É possível que algumas pistolas fotocélulas mais antigas tenham funcionado, mas o NES não funciona dessa maneira. Absolutamente.

Como o NES Zapper funciona


O sistema é bem complicado. Quando você pressiona o gatilho, o NES desenha uma moldura preta sólida na TV. O NES desenha 60 quadros por segundo; portanto, um quadro fica na tela por cerca de 0,0166 ou 17 ms. No próximo quadro, um retângulo branco aparece no lugar do pato e o prefixo interroga o estado da fotocélula na pistola. A saída de um fotodíodo é muito diferente, dependendo de ser direcionada a uma tela preta ou a um retângulo branco. E tudo isso acontece durante a demonstração de dois quadros, 34 ms. O homem mal nota. O próximo quadro desenha o campo novamente e um acerto ou um acerto é contado em sua direção. Engenhoso!



"Mas, ei, como esse sistema funciona quando há dois objetivos na tela?" Boa pergunta Os engenheiros da NES lidam com esse problema simplesmente repetindo todo o processo. O primeiro quadro será preto, seguido por um quadro com um retângulo branco no lugar de um alvo e uma pesquisa de fotocélulas. Se houver outro alvo na tela, o terceiro quadro estará com um retângulo ao redor do segundo alvo. Todos os três quadros levam cerca de meio segundo, para que você não tenha a oportunidade de fotografar dois patos ao mesmo tempo. Você pode disparar apenas um, e essa técnica permite ao NES saber qual deles.

"Se o NES apenas pesquisar o estado da fotocélula, posso apontar a arma para uma luz forte e registrar meu acerto todas as vezes?" Outra boa pergunta. Os engenheiros da NES se livraram desse engano, interrogando o estado da fotocélula mesmo durante o aparecimento da primeira moldura preta. Se a célula fotoelétrica vir algo diferente de uma tela preta, o prefixo considerará uma falta. Há rumores de que nas versões mais antigas do jogo esse erro não foi corrigido, mas até agora ninguém foi capaz de demonstrar esse erro.



Outro olhar para o problema


Agora, sabendo como o Zapper funciona, podemos avançar para resolver problemas com o monitor digital. Se o jogo mede apenas a diferença entre preto e branco, a arma deve funcionar bem em monitores digitais. Mas, obviamente, não funciona. Alguns argumentam que a fotocélula é sensível à radiação infravermelha de um CRT, e o monitor digital não emite raios infravermelhos. Mas veja este vídeo: Zapper funciona muito bem!


[O vídeo mostra um Zapper modificado / aprox. perev.]

Sabemos que as linhas de digitalização não têm nada a ver com isso e que o Zapper pode distinguir entre o contraste entre branco e preto em uma tela digital. Podemos concluir que nosso problema está relacionado ao tempo. Aparentemente, um CRT pode exibir uma imagem muito mais rapidamente que um colega digital. No NES, a necessidade de verificar um retângulo branco após 16 ms é cabeada. Se sua tela digital não conseguir processar a saída do NES com velocidade suficiente, o console procurará um retângulo branco enquanto o jogo ainda estiver visível na tela.

A resolução de saída do NES é de 256 x 240 pixels. O monitor digital precisa escalar todos os quadros para a resolução de trabalho. Esse processo gera um atraso que pode atingir até 70 ms, excedendo seriamente nosso número de 16 ms.

Como consertar


Não será fácil. Se um monitor digital é muito lento por natureza, a única solução é desacelerar o NES.

Opção 1: diminuir a velocidade do relógio


Todos nós ouvimos falar em overclock do processador através do aumento da frequência do relógio. E quanto à frenagem? Podemos diminuir o tempo no processador NES sem fazer o overclock para uma fração perceptível da velocidade da luz? É necessário que o jogo vá à velocidade normal, mas quando o gatilho é pressionado, ele muda para uma operação mais lenta e, de fato, aumenta o tempo de atraso. Lembre-se de que o NES exibe uma tela preta por 16 ms e desenha um retângulo branco. Ao diminuir a velocidade do processador, podemos aumentar esse atraso e fornecer um tempo de reação ao monitor digital.

Opção 2: editando a ROM


A ROM só pode ser editada em um editor hexadecimal. E se estudássemos o emulador e descobríssemos em que local o valor do atraso é definido depois que o gatilho é pressionado? Nós poderíamos apenas aumentá-lo e torcer para que não quebrássemos nada.

Opção 3: sua opção


Agora que você sabe como o NES Zapper funciona e por que ele não funciona com os monitores digitais modernos, você está no meio do caminho para resolver esse problema e liberar a nostalgia que o destino tecnológico cruel nos privou. O que você faria para fazer o Zapper trabalhar com um monitor digital e se tornar o herói da Internet?

O esquema do trabalho não é tão complicado - com certeza todos podemos nos unir para descobrir como fazer o Zapper parar de filmar ocioso em nosso mundo digital. Compartilhe suas soluções nos comentários.

Artigo original

Source: https://habr.com/ru/post/pt418201/


All Articles