Pouvons-nous relancer Duck Hunt?



La plupart des gens se réjouissent lorsqu'ils parviennent à faire revivre de vieilles choses. Le désir sans fin de revivre l'expérience des jeunes nous conduit dans des directions que nous avons depuis longtemps oubliées. Et en chemin, nous rencontrons parfois des souvenirs oubliés qui évoquent d'autres souvenirs oubliés qui nous permettent de revivre des moments heureux auxquels nous n'avons pas pensé depuis des années, voire des décennies. Quelqu'un de retour au lycée, aux promenades en voiture du soir avec le volume de la radio avéré au maximum, renvoie le rugissement du moteur Ford Windsor . Pour ceux nés dans les années 80 et 90, ces jeux peuvent déclencher des jeux vidéo. Qui peut oublier la première réunion avec un clip d'assistant de Microsoft Office, une musique élégante de Final Fantasy ou haut-bas-bas-gauche-droite-gauche-droite-ba-select-start ?

Les progrès de la technologie des processeurs nous ont permis de passer du temps avec nos jeux préférés grâce à des émulateurs - des programmes qui émulent les processeurs d'anciens ordinateurs. Les jeux sont téléchargés des puces ROM dans des fichiers. Ces fichiers peuvent ensuite être téléchargés sur l'émulateur et jouer au jeu comme si vous y jouiez sur le système d'origine.


Internes NES Zapper

La technologie est une chose merveilleuse. Cela nous permet d'avancer et de faire aujourd'hui ce qui était impossible hier. Cependant, dans certains cas, ce paradigme est incorrect. L'un d'eux est la console de jeu NES, la Nintendo Entertainment System et son contrôleur d'armes à feu, Zapper. À un moment donné, NES est devenu la console de jeu la plus populaire, et pour cause. Les ingénieurs, programmeurs et experts audio de Nintendo ont créé certains des meilleurs jeux vidéo jamais créés. Malheureusement, certains de ces jeux ne peuvent pas être joués sur votre émulateur Raspberry Pi préféré, car Zapper n'est pas compatible avec les moniteurs numériques modernes. Il est peu probable que quelqu'un puisse oublier à quel point c'était amusant de jouer à Duck Hunt . Ce jeu était fourni avec tous les systèmes NES, nous l'avons donc tous joué. Mais la nostalgie qui lui est associée est enterrée en raison de caractéristiques technologiques non résolues.

Je vais vous dire, en tant que hacker à hacker - cela ne peut plus être toléré. Nous allons donc d'abord voir comment Zapper fonctionne et pourquoi il ne fonctionne pas avec les écrans numériques. Et puis nous réfléchirons à la façon de le réparer.

Le problème


Le pistolet Zapper est juste une cellule photoélectrique avec un interrupteur. Lorsque la gâchette (interrupteur) est enfoncée, NES effectue certaines manipulations avec l'écran pour comprendre où pointe le pistolet. Lesquels - nous en discuterons un peu plus tard. Mais nous devons d'abord comprendre qu'ils ne fonctionnent que sur les téléviseurs CRT analogiques. Si vous connectez votre émulateur à un tel téléviseur, vous n'aurez aucun problème. Le problème est que personne n'a de téléviseur CRT. Tous ont des téléviseurs à écran plat numériques et des moniteurs. Lorsqu'il est connecté à un tel moniteur, le jeu ne fonctionnera pas. Nous devons comprendre pourquoi il en est ainsi.

Démystifier les mythes


Il y a beaucoup de confusion sur la façon dont NES sait où Zapper se dirige, même parmi les personnes qui connaissent un peu l'électronique. Certains d'entre eux considèrent, et continuent de répandre ce mythe, que NES lit les lignes de balayage du CRT. Un CRT trace des lignes de balayage du haut vers le bas de l'écran à intervalles réguliers. En comparant l'heure de début du dessin et l'heure à laquelle Zapper voit la ligne, NES peut savoir où Zapper pointe. Et puisque le moniteur moderne affiche toutes les lignes en même temps, il est impossible de calculer exactement où Zapper pointe. Il est possible que certains pistolets à cellule photoélectrique plus anciens aient fonctionné, mais NES ne fonctionne pas de cette façon. Absolument.

Comment fonctionne NES Zapper


Le système est assez délicat. Lorsque vous appuyez sur la gâchette, NES dessine un cadre noir uni sur le téléviseur. NES tire 60 images par seconde, donc une image est à l'écran pendant environ 0,0166, soit 17 ms. Dans l'image suivante, un rectangle blanc apparaît à la place du canard, et le préfixe interroge l'état de la cellule photoélectrique dans le pistolet. La sortie d'une photodiode est très différente selon qu'elle vise un écran noir ou un rectangle blanc. Et tout cela se produit lors de la démonstration de deux trames, 34 ms. L'homme le remarque à peine. La trame suivante dessine à nouveau le terrain de jeu et un coup sûr ou un échec est compté pour vous. Ingénieux!



"Mais bon, comment fonctionne ce système quand il y a deux objectifs à l'écran?" Bonne question. Les ingénieurs NES gèrent ce problème en répétant simplement tout le processus. La première trame sera noire, suivie d'une trame avec un rectangle blanc à la place d'une cible et d'un levé photocellulaire. S'il y a une autre cible sur l'écran, alors le troisième cadre sera avec un rectangle autour de la deuxième cible. Les trois images prennent environ une demi-seconde, vous n'aurez donc pas la possibilité de tirer sur deux canards à la fois. Vous ne pouvez en tirer qu'un, et cette technique permet à NES de savoir lequel.

"Si NES interroge simplement l'état de la photocellule, puis-je simplement diriger le pistolet vers une lumière brillante et enregistrer mon coup à chaque fois?" Une autre bonne question. Les ingénieurs NES se sont débarrassés d'une telle tromperie, interrogeant l'état de la photocellule même lors de l'apparition du premier cadre noir. Si la cellule photoélectrique voit autre chose qu'un écran noir, le préfixe vous comptera comme un raté. Il y a des rumeurs selon lesquelles, dans les premières versions du jeu, cette erreur n'a pas été corrigée, mais jusqu'à présent, personne n'a pu démontrer un tel bug.



Un autre regard sur le problème


Maintenant, sachant comment Zapper fonctionne, nous pouvons passer à la résolution de problèmes avec le moniteur numérique. Si le jeu mesure simplement la différence entre le noir et le blanc, le pistolet devrait fonctionner correctement sur les moniteurs numériques. Mais cela ne fonctionne évidemment pas. Certains soutiennent que la photocellule est sensible au rayonnement infrarouge d'un CRT, et le moniteur numérique n'émet pas de rayons infrarouges. Mais regardez cette vidéo: Zapper fonctionne très bien!


[La vidéo montre un Zapper modifié / env. perev.]

Nous savons que les lignes de balayage n'y sont pour rien et que Zapper peut distinguer le contraste entre le blanc et le noir sur un écran numérique. Nous pouvons conclure que notre problème est lié au temps. Apparemment, un CRT peut afficher une image beaucoup plus rapidement qu'un collègue numérique. Dans NES, la nécessité de rechercher un rectangle blanc après 16 ms est câblée. Si votre écran numérique n'est pas en mesure de traiter la sortie NES avec une vitesse suffisante, la console recherchera un rectangle blanc pendant que le jeu est toujours visible à l'écran.

La résolution de sortie de NES est de 256 x 240 pixels. Le moniteur numérique doit adapter chaque image à la résolution de travail. Ce processus génère un retard pouvant atteindre 70 ms, dépassant sérieusement notre chiffre de 16 ms.

Comment y remédier


Ce ne sera pas facile. Si un moniteur numérique est de nature trop lente, la seule solution est de ralentir NES.

Option 1: diminuer la vitesse d'horloge


Nous avons tous entendu parler de l'overclocking du processeur en augmentant la fréquence d'horloge. Et le freinage? Pouvons-nous ralentir le temps dans le processeur NES sans l'overclocker à une fraction notable de la vitesse de la lumière? Il est nécessaire que le jeu se déroule à vitesse normale, mais lorsque la gâchette est enfoncée, elle passe à un fonctionnement plus lent et, en fait, augmente le temps de retard. N'oubliez pas que NES affiche un écran noir pendant 16 ms, puis dessine un rectangle blanc. En ralentissant le processeur, nous pouvons augmenter ce délai et donner au temps de réaction du moniteur numérique.

Option 2: modification de la ROM


La ROM ne peut être éditée que dans un éditeur hexadécimal. Que se passe-t-il si nous avons étudié l'émulateur et trouvé à quel endroit la valeur de retard est définie après avoir appuyé sur la gâchette? Nous pourrions simplement l'agrandir et espérer ne rien casser.

Option 3: votre option


Maintenant que vous savez comment fonctionne NES Zapper et pourquoi il ne fonctionne pas avec les moniteurs numériques modernes, vous êtes à mi-chemin pour résoudre ce problème et libérer la nostalgie dont le destin technologique cruel nous a privés. Que feriez-vous pour que Zapper fonctionne avec un moniteur numérique et devienne le héros d'Internet?

Le schéma de travail n'est pas si compliqué - c'est sûr que nous pouvons tous nous rassembler pour trouver comment faire en sorte que Zapper arrête de filmer au ralenti dans notre monde numérique. Partagez vos solutions dans les commentaires.

Article original

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


All Articles