Différences entre versions de « Rasp-Retro-Games-Arcade-Control »
(4 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 87 : | Ligne 87 : | ||
== Un dernier élément == | == Un dernier élément == | ||
− | + | Notre utilitaire “retrogame” est la partie logicielle qui permet de "brancher ensemble" les jeux pilotés par clavier avec nos contrôles d'arcade branchés sur le GPIO. | |
− | [https://github.com/adafruit/Adafruit-Retrogame | + | [https://github.com/adafruit/Adafruit-Retrogame Télécharger ''retrogame'' depuis GitHub] en sélectionnant le bouton "download ZIP" et décompressez ensuite le fichier sur votre Raspberry Pi. |
− | ''' | + | '''Une version pré-compilée de ''retrogame'' est inclus dans le fichier ZIP. Ce programme peut être utilisé comme tel, si vous utilisez le joystick et les boutons comme décrit ci-dessus'''. Sinon, vous pouvez adapter le code source écrit en C et vous aurez besoin de le compiler (avec le Makefile fourni dans l'archive) après avoir réalisé vos modifications. La correspondant "broche GPIO" <-> "Touche clavier" est maintenu dans le code source à l'aide d'une table (array)... cette table doit être modifié pour correspondre à votre propre raccordement sur le GPIO. |
<nowiki>cd Adafruit-Retrogame | <nowiki>cd Adafruit-Retrogame | ||
nano retrogame.c</nowiki> | nano retrogame.c</nowiki> | ||
− | ( | + | (Vous pouvez bien entendu utiliser l'éditeur de votre choix — "nano" est juste plus approprié pour les débutants.) |
− | + | Vous trouverez ensuite le code suivant aux alentours de la ligne 77... il s'agit de la déclaration et initialisation de la table (array) "io": | |
<nowiki>struct { | <nowiki>struct { | ||
Ligne 113 : | Ligne 113 : | ||
};</nowiki> | };</nowiki> | ||
− | + | <small>{{underline|Note de MCHobby:}}<br /> | |
+ | Les constantes (KEY_LEFT,...) correspondant aux touches provient du fichier d'entête input.h. Ces constantes sont en anglais (un standard international). Voici quelques termes de base pour vous aider à comprendre: | ||
+ | * KEY : clé... comprenez touche | ||
+ | * LEFT, RIGHT: Gauche, Droite (KEY_LEFT symbolise la touche gauche... la flèche de déplacement curseur vers la gauche) | ||
+ | * UP, DOWN: Haut, bas | ||
+ | * CTRL: la touche "ctrl" dit 'Contrôle'. | ||
+ | * ALT: la touche "alt". KEY_LEFTALT correspond donc à la "touche alt à gauche" sur le clavier. | ||
+ | N'hésitez pas à consulter le contenu du fichier ''input.h'' dans le répertoire ''/usr/include/linux/'' pour découvrir les autres touches mises à votre disposition... autour de la ligne 178.</small> | ||
− | + | Chaque ligne de cette table contient deux éléments. Le premier est le numéro de broche du GPIO (où un bouton, ou une direction du joystick est branché), le second correspond au code de la touche généré par ce contrôle d'Arcade. Faites attention a bien enfermer les paires de broche/touche (pin/key) soient bien enfermées entre des {encolades} avec une virgule entre elles. | |
− | + | '''Par défaut, le code est configuré pour correspondre à notre exemple de raccordement du contrôle d'arcade "sans soudure". Cela également fonctionnelle avec les contrôle standard MAME. Vous n'avez donc pas besoin de changer quoi que ce soit; la version pré-compilée devrait donc convenir.''' | |
− | + | Si vous avez besoin de broche de masse/GND en plus (et que vous disposez encore de broche GPIO non utilisée), indiquez le code touche GND à la place de KEY_xxx. | |
+ | |||
+ | Ecrivez vos changements dans le code puis sortez de l'éditeur. | ||
+ | |||
+ | Pour finir, tapez: | ||
<nowiki>make</nowiki> | <nowiki>make</nowiki> | ||
− | + | Cela devrait compiler l'exécutable '''retrogame'''. Si vous obtenez des messages d'erreur, cela signifie qu'il y a un problème avec votre modification de la table de correspondance - les erreurs les plus courantes sont l'oubli d'une accolade, d'un virgule ou d'un point-virgule. | |
− | ''' | + | '''Mais patiente'''...nous ne somme pas encore prêt a exécuter le programme! Retrogame à besoin du module kernel uinput. Il est présent sur le système mais n'est pas encore activé par défaut. Pour faire nos tests, vous pouvez taper: |
<nowiki>sudo modprobe uinput</nowiki> | <nowiki>sudo modprobe uinput</nowiki> | ||
− | + | Pour rendre le chargement du module '''persistant entre les reboot''', ajoutez le module uinput dans /etc/modules en exécutant la commande suivante: | |
<nowiki>sudo sh -c 'echo uinput >> /etc/modules'</nowiki> | <nowiki>sudo sh -c 'echo uinput >> /etc/modules'</nowiki> | ||
− | ''' | + | '''Maintenant''' nous somme enfin prêt pour faire nos tests! |
− | Retrogame | + | Retrogame à besoin d'être exécuté en ''root'', voir la commande: |
<nowiki>sudo ./retrogame</nowiki> | <nowiki>sudo ./retrogame</nowiki> | ||
− | + | Essayer... si cela fonctionne alors pressez les touches "contrôle+C" pour arrêter le programme. Nous allons maintenant configurer le système pour le lancer automatiquement en tâche de fond lors du démarrage du système. | |
+ | |||
+ | Nous allons modifier le fichier rc.local à l'aide de nano | ||
<nowiki>sudo nano /etc/rc.local</nowiki> | <nowiki>sudo nano /etc/rc.local</nowiki> | ||
− | + | Insérez une ligne avec la ligne indiquant "exit 0" (en fin de fichier) et ajoutez: | |
<nowiki>/home/pi/Adafruit-Retrogame/retrogame &</nowiki> | <nowiki>/home/pi/Adafruit-Retrogame/retrogame &</nowiki> | ||
− | + | Si vous avez placé rétrogame dans un autre répertoire, il convient d'adapter la ligne ci-dessus en conséquence. "sudo" n'est pas nécessaire ici car le script rc.local est exécuté en tant que root. | |
− | + | Rebootez votre système pour tester l'activation au démarrage: | |
<nowiki>sudo reboot</nowiki> | <nowiki>sudo reboot</nowiki> | ||
− | + | Le logiciel "Retrogame" attend patiemment en tâche d'arrière plan, prêt à être utilisé avec n'importe quel émulateur. | |
− | + | Chaque émulateur dispose de sa propre configuration clavier (touches à utiliser pour avec l'émulateur). Configurez votre émulateur pour qu'il corresponde aux touches renvoyées par votre "contrôleur de jeu + programme Retrogame". Les flèches Haut/Bas/Gauche/Droit (''Up/down/left/right'') depuis les touches clavier sont d'usage très commun et utilisé comme option par défaut dans la plupart des programmes, le autres touches/actions peuvent demander quelques ajustements. | |
{{Rasp-Retro-Games-TRAILER}} | {{Rasp-Retro-Games-TRAILER}} |
Version actuelle datée du 24 mars 2014 à 13:36
Ajouter un controleur d'Arcade
Si vous êtes arrivé ici, vous disposez d'un (ou plusieurs) jeux auquel vous pouvez jouer au clavier. La prochaine étape consiste à ajouter les contrôles d'Arcade...
C'est maintenant que les choses prennent un tournant créatif. Il n'existe pas une disposition idéale des contrôles (manette et boutons) qui puisse convenir à tous les jeux. Par contre il existe quelques dispositions plus fréquentes qui conviennent à de nombreux cas. Et pour le reste, vous pouvez encore utiliser un clavier.
Vous aurez également besoin de réaliser votre panneau de commande en utilisant les matérieux et outils correspondant au mieux à vos compétences. Chez AdaFruit, nous avons la chance de pouvoir utiliser une découpeuse laser qui fonctionne avec de l’acrylique (plexyglass) mais cela resterait un défi de taille pour la plupart des gens. Du contreplaqué ou boite métallique sont des matériaux viable (une grande boite à cigare peut aussi convenir) pour faire les trous, vous pouvez utiliser une foreuse, une scie a trou, une Dremel ou une lime à bois. n'hésitez pas improviser!
Si vous ne disposez pas d'un fournisseur de bouton sous la main, sachez que MCHobby propose aussi un joli assortiment de bouton d'arcade:
Les éléments
Crédit pour les images ci-dessous à AdaFruit Industries - All images here under are credited to AdaFruit Industries
Le joystick d'un ordinateur Atari ou Commodore peut aussi être utilisé. Les joysticks des consoles plus récentes utilise un protocole série... et malheureusement, cela ne fonctionnera pas ici. Les gamepads USB est une autre option viable.
Nous proposons des contrôles d'arcade sur le WebShop de MCHobby, contrôles qui doivent être montés. N'oubliez pas que forer et couper sont des opérations à réaliser avec un minimum de précaution et règles de bon sens comme utiliser DES LUNETTES DE SECURITE et couper VERS L'EXTERIEUR (jamais vers soi), porter des vêtements adaptés, etc. |
Broches du GPIO
Chaque broche du connecteur dispose d'un "numéro GPIO" unique qui diffère de l'ordre des broches sur le connecteur. Les boutons et joystick (chacun ayant 4 directions) seront connectés parmi les différentes broches GPIO disponible et la masse (GND).
La plupart des cartes Raspberry Pi suivent maintenant l'arrangement des broches de la "Revision 2":
Crédit: AdaFruit Industries www.adafruit.com
Si vous disposez toujours d'un ancien modèle (prédécesseur de la carte Modèle B) est facile à reconnaitre car elle n'a pas de trou de montage. Dans ce cas le numéro des broches est différent:
Crédit: AdaFruit Industries www.adafruit.com
Notez que les broches GPIO 14 et 15 sont hors sujet et interdite d'utilisation. Par défaut, elles sont configurées comme port série. Il est possible de désactiver le port série (pour récupérer les broches) mais cela nécessite de modifier la configuration de votre Pi (c'est un peu ennuyant, pas nécessaire puisque nous de nombreuses broches et surtout plus facile).
Les cartes de révision 2 dispose de 4 broches GPIO complémentaires (28–31) sur un connecteur adjacent mais cela nécessite quelques opérations de soudure. Si vous avez désespérément besoin d'entrées supplémentaires, vous trouverez des information sur Embedded Linux Wiki (réservé aux utilisateurs avancés).
Il y a seulement 5 broches de masse (GND) disponibles sur le connecteur, mais certain gamers aurons besoin de plus de contrôles que cela. Une des cartes cartes Perma-Proto peut être utilisée pour fournir un "grand rail de masse" où l'un des côtés de tous les boutons peut être connecté. En alternative, si vous avez des broches GPIO en extra (et non utilisée) et que vous avez besoin de broches de masse (GND) complémentaires.... nous montrerons plus loin qu'il existe une solution logicielle pour transformer une broche du GPIO en broche de masse.
Le processeur du Raspberry Pi à la possibilité d'activer une résistance PullUp 'interne'. Par conséquent, vous n'avez pas besoin de résistance PullUp externe pour les boutons et le contrôleur d'Arcade
Tout comme pour la réalisation de votre panneau de contrôle où vous êtes libre de la technique de construction et interprétation créative... le branchement des contrôles sur le GPIO peut être réaliser à l'aide de différentes méthodes. Vous devez donc opter pour votre propre méthodologie de câblage. Nous proposons néanmoins quelques éléments/produits qui peuvent vous aider. En plus des cartes Perma-Proto déja mentionnées, il y a les fils de connexion rapide qui fonctionne avec les boutons et assortiment de fil de connexion multifonctionnel qui peuvent être utilisés avec les joysticks et branchés directement sur le GPIO (sans avoir besoin d'une carte Perma-Proto). Les options sont abondantes! Vous aurez probablement besoin d'une combinaison d'entre eux et quelques soudures seront certainement nécessaire.
Raccordement
Le joystick
Crédit: AdaFruit Industries www.adafruit.com
Voici le diagramme du connecteur de notre joystick d'arcade. Un fil doit être connecté sur la masse/GND. Ensuite, chacune des 4 autres broches seront raccordée sur des broches différentes du GPIO.
Les indications de direction ne sont valable que si le joystick est orienté avec le connecteur vers le haut. Il est tout a fait possible d'installer le joystick sous différente orientation... pensez seulement à adapter le raccordement sur le GPIO pour correspondre au changement de direction (orienté de 90° sur la droite, le "haut" devient la "droite", ...).
Raccordement sur le GPIO
Les fiches au bout des câbles de connexion rapide tendent à bloquer les broches adjacentes sur le connecteur GPIO. Vous pouvez les tailler avec un cutter ou une Dremel afin de les amincir, ou planifier votre cablage pour éviter d'utiliser les broches adjacentes.
Voici une proposition de câblage pour un joystick et deux boutons: elle utilise 5 fils multifonctionnel femelle-vers-femelle pour le joystick et deux câbles de connexion rapide non modifié pour les boutons. C'est une disposition très élémentaire mais qui convient déjà à quelques jeux classiques. Un clavier USB a proximité sera parfait pour prendre en charge les fonctions plus rarement utilisées (insertion de pièces, démarrer le jeux).
Vous pauvez aussi vous connecter sur d'autres broches du GPIO si les opérations de soudure ne vous effrayent pas - assurez vous de connecter l'une des broches du bouton sur une broche du GPIO et l'autre broche du bouton sur la broche de masse/GND. Vous aurez aussi besoin d'éditer et modifier la programme de commande proposé par AdaFruit (rassurez vous, cela n'est pas bien compliqué).
Crédit: AdaFruit Industries www.adafruit.com
Un dernier élément
Notre utilitaire “retrogame” est la partie logicielle qui permet de "brancher ensemble" les jeux pilotés par clavier avec nos contrôles d'arcade branchés sur le GPIO.
Télécharger retrogame depuis GitHub en sélectionnant le bouton "download ZIP" et décompressez ensuite le fichier sur votre Raspberry Pi.
Une version pré-compilée de retrogame est inclus dans le fichier ZIP. Ce programme peut être utilisé comme tel, si vous utilisez le joystick et les boutons comme décrit ci-dessus. Sinon, vous pouvez adapter le code source écrit en C et vous aurez besoin de le compiler (avec le Makefile fourni dans l'archive) après avoir réalisé vos modifications. La correspondant "broche GPIO" <-> "Touche clavier" est maintenu dans le code source à l'aide d'une table (array)... cette table doit être modifié pour correspondre à votre propre raccordement sur le GPIO.
cd Adafruit-Retrogame nano retrogame.c
(Vous pouvez bien entendu utiliser l'éditeur de votre choix — "nano" est juste plus approprié pour les débutants.)
Vous trouverez ensuite le code suivant aux alentours de la ligne 77... il s'agit de la déclaration et initialisation de la table (array) "io":
struct { int pin; int key; } io[] = { // Input Output (from /usr/include/linux/input.h) { 25, KEY_LEFT }, { 9, KEY_RIGHT }, { 10, KEY_UP }, { 17, KEY_DOWN }, { 23, KEY_LEFTCTRL }, { 7, KEY_LEFTALT } };
Note de MCHobby:
Les constantes (KEY_LEFT,...) correspondant aux touches provient du fichier d'entête input.h. Ces constantes sont en anglais (un standard international). Voici quelques termes de base pour vous aider à comprendre:
- KEY : clé... comprenez touche
- LEFT, RIGHT: Gauche, Droite (KEY_LEFT symbolise la touche gauche... la flèche de déplacement curseur vers la gauche)
- UP, DOWN: Haut, bas
- CTRL: la touche "ctrl" dit 'Contrôle'.
- ALT: la touche "alt". KEY_LEFTALT correspond donc à la "touche alt à gauche" sur le clavier.
N'hésitez pas à consulter le contenu du fichier input.h dans le répertoire /usr/include/linux/ pour découvrir les autres touches mises à votre disposition... autour de la ligne 178.
Chaque ligne de cette table contient deux éléments. Le premier est le numéro de broche du GPIO (où un bouton, ou une direction du joystick est branché), le second correspond au code de la touche généré par ce contrôle d'Arcade. Faites attention a bien enfermer les paires de broche/touche (pin/key) soient bien enfermées entre des {encolades} avec une virgule entre elles.
Par défaut, le code est configuré pour correspondre à notre exemple de raccordement du contrôle d'arcade "sans soudure". Cela également fonctionnelle avec les contrôle standard MAME. Vous n'avez donc pas besoin de changer quoi que ce soit; la version pré-compilée devrait donc convenir.
Si vous avez besoin de broche de masse/GND en plus (et que vous disposez encore de broche GPIO non utilisée), indiquez le code touche GND à la place de KEY_xxx.
Ecrivez vos changements dans le code puis sortez de l'éditeur.
Pour finir, tapez:
make
Cela devrait compiler l'exécutable retrogame. Si vous obtenez des messages d'erreur, cela signifie qu'il y a un problème avec votre modification de la table de correspondance - les erreurs les plus courantes sont l'oubli d'une accolade, d'un virgule ou d'un point-virgule.
Mais patiente...nous ne somme pas encore prêt a exécuter le programme! Retrogame à besoin du module kernel uinput. Il est présent sur le système mais n'est pas encore activé par défaut. Pour faire nos tests, vous pouvez taper:
sudo modprobe uinput
Pour rendre le chargement du module persistant entre les reboot, ajoutez le module uinput dans /etc/modules en exécutant la commande suivante:
sudo sh -c 'echo uinput >> /etc/modules'
Maintenant nous somme enfin prêt pour faire nos tests!
Retrogame à besoin d'être exécuté en root, voir la commande:
sudo ./retrogame
Essayer... si cela fonctionne alors pressez les touches "contrôle+C" pour arrêter le programme. Nous allons maintenant configurer le système pour le lancer automatiquement en tâche de fond lors du démarrage du système.
Nous allons modifier le fichier rc.local à l'aide de nano
sudo nano /etc/rc.local
Insérez une ligne avec la ligne indiquant "exit 0" (en fin de fichier) et ajoutez:
/home/pi/Adafruit-Retrogame/retrogame &
Si vous avez placé rétrogame dans un autre répertoire, il convient d'adapter la ligne ci-dessus en conséquence. "sudo" n'est pas nécessaire ici car le script rc.local est exécuté en tant que root.
Rebootez votre système pour tester l'activation au démarrage:
sudo reboot
Le logiciel "Retrogame" attend patiemment en tâche d'arrière plan, prêt à être utilisé avec n'importe quel émulateur.
Chaque émulateur dispose de sa propre configuration clavier (touches à utiliser pour avec l'émulateur). Configurez votre émulateur pour qu'il corresponde aux touches renvoyées par votre "contrôleur de jeu + programme Retrogame". Les flèches Haut/Bas/Gauche/Droit (Up/down/left/right) depuis les touches clavier sont d'usage très commun et utilisé comme option par défaut dans la plupart des programmes, le autres touches/actions peuvent demander quelques ajustements.
Source: Adafruit Retro Gaming with Raspberry Pi
Créé par Phillip Burgess pour AdaFruit Industries.
Traduction réalisée par Meurisse D pour MCHobby.be.
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com