Certains jeux vidéos d'arcade sont jouables uniquement avec certains accessoires.
Un volant et des pédales, un tapis de danse, des boutons à frapper, etc, tout ce qui fait le charme des bornes dédiées.
Parmi elles, il y a les jeux de flingues qui sont particulièrement amusants, mais les évolutions technologiques ont rendu les pistolets optiques obsolètes, car inopérant par la disparition du téléviseur à tube cathodique.
De plus, aucun émulateur n'est capable de faire fonctionner un pistolet optique, et ce même si on utilise une télé à tube.
En fait les émulateurs simulent le déplacement du réticule de visée soit par les mouvements de la souris, soit par les mouvements d'un joystick analogique. (mame permet les deux)
Pour résumer, la problématique :
- Dans le cas des jeux originaux, sur console ou arcade, le pistolet optique ne fonctionne pas sur une télé LCD.
- Dans le cas des jeux émulés, console ou arcade, le pistolet optique n'est pas supporté par l'émulateur.
Les solutions disponibles :
- Dans le cas des jeux originaux, certains jeux d'arcade utilisent les coordonnées X,Y d'un potentiomètre analogique pour déplacer le réticule de visée.
- Dans le cas des jeux émulés, on peut utiliser la souris ou un joystick analogique pour déplacer le réticule de visée.
- Par le passé (oui il y a quasi 10 ans…) j’avais expérimenté ici ce pistolet infra-rouge G2N pour un appareil fonctionnel qu’il restait à finaliser, chose que je n’ai pas pris le temps de faire, emporté par d’autres sujets… (j’ai supprimé la série de billets pour plus de clarté)
- Depuis, une nouvelle version plus simple à mettre en œuvre a fait son apparition, et après avoir réalisé rapidement un module de test fonctionnel, je me suis rendu compte qu’il me faudrait adapter le code et le hardware à mes besoins.
Je vais donc décrire ici toute la documentation utile à la réalisation de ce pistolet Infra-Rouge maison.
Schéma de principe :
Un simple Arduino Pro Micro 5V constitue le cœur du système de traitement de la donnée.
Il est chargé via le bus I²C, de récupérer les informations de positionnement en X et Y d'une caméra infra-rouge disposée dans le pistolet, par rapport à deux références infra-Rouge accrochées au dessus de l'écran.
L’Arduino fait ensuite l'interface avec l’ordinateur de jeux en transposant tout ceci en « HID Device », Joystick et Souris USB (oui, simultanément), afin de déplacer le réticule des jeux de tir.
Dans le pistolet nous retrouvons donc une caméra IR volée dans une Wiimote, à laquelle nous avons joint quelques composants essentiels.
Tout d’abord un LM317 et ses satellites permettant de fabriquer le 3,3V nécessaire au bon fonctionnement de la caméra, à partir du 5V fournit par le port USB.
Un crystal à 24 ou 25 Mhz, un circuit de reset et une conversion de niveaux logiques 3,3V <-> 5V, afin que l’Arduino puisse bien s’entendre avec la caméra sur le bus I²C.
Reste à déporter aussi quelques entrées de l’Arduino pour y raccorder des boutons faisant offices de gâchette et autre choses utiles.
Je pense qu'on pourrait se passer des conversions de tension et de niveaux logiques en 3,3V en utilisant directement un Arduino Pro Micro 3,3V, mais le fait est que je n'en disposais pas lors de la réalisation de ce sujet… À essayer à l'occasion.
Gun PCB :
On doit pouvoir se débrouiller facilement avec l’électronique disponible sous forme de modules (Arduino, Logic level converter…) et une carte perforée à souder pour fabriquer une plaquette sur mesure pour aller dans le flingue.
- Pour autant on pourrait aussi avoir envie de router une plaquette soit-même, aussi j’ai entrepris de dessiner ce schéma que d’aucun préféreront sans doute au crobar Fritzing précédent.