Outils pour utilisateurs

Outils du site


notes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
notes [08/02/2015 20:46]
sky99 [Projet émulateur portable]
notes [24/02/2015 17:02]
sky99
Ligne 2: Ligne 2:
 Cette page contient des notes diverses, qui se retrouveront probablement intégrées à d'​autres pages ultérieurement. Cette page contient des notes diverses, qui se retrouveront probablement intégrées à d'​autres pages ultérieurement.
  
-===== Projet émulateur portable =====+ 
 + 
 + 
 + 
 + 
 +====== Projet émulateur portable =====
 +Un super lien, avec plein de ressources utiles, et à jour : 
 +https://​weekendengineer.wordpress.com/​2014/​09/​08/​setting-up-gameboy-advance-for-retropie/​ 
 +Second lien intéressant,​ avec pas mal d'​infos : http://​blog.petrockblock.com/​forums/​topic/​updated-for-2-3-step-by-step-guide/​ 
 L'​objectif de ce projet est de fabriquer une console portable rétro-gaming. Pour cela, nous utiliserons de l'​émulation,​ sur un Raspberry Pi. Le choix du Raspberry pi est justifié par son faible coût, l'​énorme communauté,​ la compacité et la faible consommation. Pour ne rien gâcher, j'ai l'​habitude de réaliser des projets dessus. Pour l'​instant je développe sur un Raspberry pi B+, mais la question se posera par la suite de la carte à utiliser. En effet, le Raspberry pi A+ est significativement plus compact, et consomme nettement moins que les autres. Pour une console compacte, ce sera donc un choix intéressant,​ puisque nous gagnons en volume, mais aussi en autonomie à batterie constante. En contrepartie,​ on passe a 256 Mio de ram contre 512 pour le B+, et un port USB contre quatre et un port ethernet pour le B+. Cela ne devrait pas poser de problèmes pour une console portable. D'un autre côté, pour une consommation légèrement supérieure à celle d'un B+, il y a le Raspberry pi 2 B, qui intègre un CPU arm v7 à quatre cœurs à 900Mhz avec 1 Gio de RAM contre un CPU arm v6 à un cœur à 700Mhz et 512 Mio de ram. L'​objectif de ce projet est de fabriquer une console portable rétro-gaming. Pour cela, nous utiliserons de l'​émulation,​ sur un Raspberry Pi. Le choix du Raspberry pi est justifié par son faible coût, l'​énorme communauté,​ la compacité et la faible consommation. Pour ne rien gâcher, j'ai l'​habitude de réaliser des projets dessus. Pour l'​instant je développe sur un Raspberry pi B+, mais la question se posera par la suite de la carte à utiliser. En effet, le Raspberry pi A+ est significativement plus compact, et consomme nettement moins que les autres. Pour une console compacte, ce sera donc un choix intéressant,​ puisque nous gagnons en volume, mais aussi en autonomie à batterie constante. En contrepartie,​ on passe a 256 Mio de ram contre 512 pour le B+, et un port USB contre quatre et un port ethernet pour le B+. Cela ne devrait pas poser de problèmes pour une console portable. D'un autre côté, pour une consommation légèrement supérieure à celle d'un B+, il y a le Raspberry pi 2 B, qui intègre un CPU arm v7 à quatre cœurs à 900Mhz avec 1 Gio de RAM contre un CPU arm v6 à un cœur à 700Mhz et 512 Mio de ram.
 D'​après les premiers tests, ce modèle est nettement plus puissant, et permet d'​émuler de façon confortable la Playstation 1 ou la Nintendo 64, contrairement au Raspberry Pi B+ qui était un peu juste pour ces plateformes. D'​après les premiers tests, ce modèle est nettement plus puissant, et permet d'​émuler de façon confortable la Playstation 1 ou la Nintendo 64, contrairement au Raspberry Pi B+ qui était un peu juste pour ces plateformes.
-==== Réalisation - prototype 1 ====+ 
 + 
 +===== Activation des sauvegardes d'​état ===== 
 +Pour activer les sauvegardes d'​état,​ il faut faire quelques manipulations:​ 
 +https://​weekendengineer.wordpress.com/​2014/​09/​05/​retropie-adding-game-roms-bios-files-and-enabling-save-states/​ 
 +Je dois encore vérifier si tout fonctionne à ce niveau. 
 + 
 +===== Activation des touches de menu sur la manette ===== 
 +On trouvera ici des conseils de configuration,​ ainsi que des explications sur l'​ajout de touches spéciales sur la manette pour commander le système. Ainsi, la touche select deviendra une touche "​hotkey",​ qui lorsque maintenue, modifie le comportement ​ des autres touches, pour ajouter de nouvelles fonctions sans perdre de touches. 
 +Les infos sont ici :  
 +http://​blog.petrockblock.com/​forums/​topic/​updated-for-2-3-step-by-step-guide/​ 
 + 
 +En pratique, pour pouvoir quitter l'​émulateur (retroarch) sans avoir à appuyer sur echap sur un clavier, il faudra ajouter ceci au fichier de configuration (/​opt/​retropie/​configs/​all/​retroarch.cfg) : 
 + 
 +<code bash> 
 +input_enable_hotkey_btn = "​8"​ 
 +input_exit_emulator_btn = "​9"​ 
 +</​code>​ 
 +Dans mon cas, la touche select est la 8, et start la 9. Du coup maintenir select, puis appuyer sur start revient au menu principal, quand on est dans retroarch. 
 + 
 +De même, on peut ajouter le fait de sauvegarder une savestate, ou d'en charger une :  
 +<code bash> 
 +input_save_state_btn = "​5"​ 
 +input_load_state_btn = "​4"​ 
 +</​code>​ 
 + 
 +Ici, maintenir select puis appuyer sur L1 chargera la savestate, tandis que R1 la chargera.  
 + 
 +Il est également possible de régler le volume sonore depuis la manette :  
 +<code bash> 
 +input_volume_up_axis = "​-1"​ 
 +input_volume_down_axis = "​+1"​ 
 +</​code>​ 
 +Si on ajoute ces lignes au fichier retroarch.cfg,​ alors le fait de maintenir select, puis d'​appuyer sur la fleche du haut ou du bas de la croix directionnelle augmentera ou diminuera le volume sonore. 
 + 
 +===== Réalisation - prototype 1 =====
 La première étape est de faire fonctionner le système d'​émulation sur le Raspberry pi.  La première étape est de faire fonctionner le système d'​émulation sur le Raspberry pi. 
-=== Installation de RetroPie ===+==== Installation de RetroPie ​====
 J'ai utilisé RetroPie, qui s'​appuie sur EmulationStation. Voici le guide d'​installation sur lequel je me suis basé : J'ai utilisé RetroPie, qui s'​appuie sur EmulationStation. Voici le guide d'​installation sur lequel je me suis basé :
 [[http://​emulationstation.org/​gettingstarted.html#​install_rpi_retropie|Installation de RetroPie sur un Raspberry Pi]] [[http://​emulationstation.org/​gettingstarted.html#​install_rpi_retropie|Installation de RetroPie sur un Raspberry Pi]]
 +
 +Voici un autre tutoriel, que j'ai utilisé, et qui est plus détaillé, contenant des informations à jour sur la configuration post-installation :
 +http://​www.raspberrypi.org/​forums/​viewtopic.php?​f=78&​t=85041
 Cette suite logicielle permet d'​installer tout ce qui est nécessaire pour émuler un grand nombre de consoles retro-gaming. Plusieurs solutions pour l'​installer :  Cette suite logicielle permet d'​installer tout ce qui est nécessaire pour émuler un grand nombre de consoles retro-gaming. Plusieurs solutions pour l'​installer : 
   - Télécharger une image pré-configurée (la plus facile);   - Télécharger une image pré-configurée (la plus facile);
Ligne 15: Ligne 62:
  
 J'ai retenu la seconde solution, car j'​avais déjà un système configuré. En pratique, c'est un peu long, mais assez simple. Tout d'​abord,​ il faut mettre la liste des paquets du système :  J'ai retenu la seconde solution, car j'​avais déjà un système configuré. En pratique, c'est un peu long, mais assez simple. Tout d'​abord,​ il faut mettre la liste des paquets du système : 
-<​code>​+<​code ​bash>
 sudo apt-get update sudo apt-get update
 </​code>​ </​code>​
 On vérifiera alors que les paquets git et dialog soient installés : On vérifiera alors que les paquets git et dialog soient installés :
-<​code>​+<​code ​bash>
 sudo apt-get install git dialog sudo apt-get install git dialog
 </​code>​ </​code>​
Ligne 27: Ligne 74:
 </​code>​ </​code>​
 Une fois ceci fait, on obtient un répertoire ​ RetroPie-Setup,​ dans lequel on se rend avant de rendre le script exécutable,​ puis de l'​exécuter :  Une fois ceci fait, on obtient un répertoire ​ RetroPie-Setup,​ dans lequel on se rend avant de rendre le script exécutable,​ puis de l'​exécuter : 
-<​code>​+<​code ​bash>
 cd RetroPie-Setup cd RetroPie-Setup
 chmod a+x retropie_setup.sh chmod a+x retropie_setup.sh
 sudo ./​retropie_setup.sh sudo ./​retropie_setup.sh
 </​code>​ </​code>​
 +
 +Au bout d'un moment, on obtient un menu proposant divers choix. Deux options nous intéressent ici : installer les binaires, la solution la plus rapide des deux, ou compiler depuis les sources, ce qui sera bien plus long (16-17h), mais permettra d'​avoir la toute dernière version. Pour ma part j'ai installé les binaires.
 +
 +Au bout d'un moment, l'​installation se termine, et on peut utiliser le système d'​émulation.
 +
 +Pour ma part, j'ai configuré le système afin que l'​interface graphique ne se lance pas automatiquement. Je me logue donc, avant de lancer la suite logicielle via la commande suivante :
 +<code bash>
 +emulationstation
 +</​code>​
 +A ce stade, un clavier sera utile, pour se déplacer dans les menus. Si on branche une manette USB, le logiciel proposera de configurer celle ci. Dans le cas contraire, il suffira d'​appuyer sur la touche espace pour activer le menu qui permet entre autres de configurer les manettes.
 +Attention toutefois, ce menu permet de configurer la manette pour permettre de contrôler le menu général, mais ne permet pas de configurer les boutons pour les jeux, dans les émulateurs.
 +
 +==== Configuration des émulateurs ====
 +=== Super Nintento ===
 +L'​emulateur snes utilisé par défaut est à priori RetroArch. Voici la page wiki vers le fichier de configuration : https://​github.com/​petrockblog/​RetroPie-Setup/​wiki/​RetroArch-Configuration
 +La documentation présente sur ce site n'est pas à jour pour le moment, et indique que le fichier de configuation se trouve dans votre /home/pi
 +Or, ce n'est plus le cas, il faut maintenant chercher dans /​opt/​retropie/​emulators/​.
 +Du coup, pour pouvoir configurer la manette pour la SNES, avec retroarch, il faut faire :
 +<code bash>
 +cd /​opt/​retropie/​emulators/​retroarch
 +./​retroarch-joyconfig
 +</​code>​
 +
 +Nous pourrons ainsi visualiser les commandes, et voir à l'​écran le fichier généré. ​
 +C'est l'​occasion d'​essayer divers réglages, sans réellement enregistrer la configuration. Une fois ceci fait, il est alors possible d'​utiliser la même commande pour générer le fichier de configuration,​ et de rajouter ceci à la fin du fichier de configuration de retroarch :
 +
 +<code bash>
 +sudo ./​retroarch-joyconfig -p 1 -j 0 -t 3 >> /​opt/​retropie/​configs/​all/​retroarch.cfg
 +</​code>​
 +
 +L'​option //-p 1// permet de spécifier qu'on configure le joueur 1, et le //-j 0// indique qu'on utilisera pour cela la première manette branchée, la 0. Enfin, l'​option -t 3 indique qu'au bout de 3 secondes, on passera à l'​assignation de la commande suivante. C'est utile si votre manette ne dispose pas de toutes les touches, cela permet d'​ignorer certaines des assignations.
 +
 +Le double chevron (>>) indique qu'on ajoute la sortie de cette commande au fichier de configuration indiqué après.
 +On peut de même vérifier le résultat de la commande, voire modifier les réglages enregistrés en faisant ceci :
 +<code bash>
 +sudo nano /​opt/​retropie/​configs/​all/​retroarch.cfg
 +</​code>​
 +
 +Attention à ne pas exécuter plusieurs fois la configuration comme indiqué précédemment,​ car cela ajouterait à chaque fois un bloc de commandes. Après la première fois, il faudra soit effacer les lignes correspondantes,​ puis relancer la commande, soit modifier directement le fichier de configuration.
 +
 +
 +=== Megadrive (Genesis) ===
 +L'​emulateur de Megadrive est probablement Retroarch, car la configuration de celui ci est également appliquée pour les jeux de Megadrive (Genesis).
 +
 +=== NES ===
 +De même, ici, c'est Retroarch qui s'​occupe de l'​émulation NES, donc la configuration des manettes est utilisée ici. Sur NES on aura uniquement la croix directionnelle,​ les boutons start, select, A et B.
 +
 +=== Game Boy Advance ===
 +L'​émulateur game boy advance ne démarre pas pour le moment, car il réclame un fichier de bios de gba. J'ai trouvé ou télécher des fichiers de bios : 
 +http://​www.emuparadise.me/​biosfiles/​bios.html
 +Ce lien pourrait servir pour d'​autres émulateurs.
 +
 +L'​émulateur de game boy advance est **gpsp**, et son répertoire est 
 +
 +<​code>/​opt/​retropie/​emulators/​gpsp</​code>​
 +Il faut donc copier le fichier gba_bios.bin dans le répertoire partagé BIOS (/​home/​pi/​RetroPie/​BIOS/​)
 +On pourra ensuite copier ce fichier dans le répertoire adéquat : 
 +<code bash>​sudo cp /​home/​pi/​RetroPie/​BIOS/​gba_bios.bin /​opt/​retropie/​emulators/​gpsp/​raspberrypi/</​code>​
 +
 +Si on lance maintenant emulationstation,​ on peut lancer des jeux de gba (bien sur il faut avoir copié les roms dans le répertoire partagé roms/gba).
 +
 +Pour ouvrir le menu de l'​émulateur,​ il faudra appuyer sur la touche F10 du clavier, ce qui nous permettra de configurer la manette. Pour la première configuration,​ il faudra donc un clavier, mais ça n'est pas nécessaire par la suite. Il suffit de suivre les indications à l'​écran.
 +A noter que par défaut, la dernière option permet d'​activer un raccourci vers le menu de l'​émulateur,​ avec select + gâchette droite. On peut alors se déplacer dans le menu sans clavier, et également quitter l'​émulateur et ainsi revenir au menu principal.
 +
 +Le fichier de configuration des touches se trouve à l'​emplacement suivant : 
 +<code bash>/​opt/​retropie/​emulators/​gpsp/​raspberrypi/​keys.txt</​code>​
 +
 +
 +Voici un lien vers le site qui m'a permis de faire fonctionner l'​émulateur de game boy advance : 
 +https://​weekendengineer.wordpress.com/​2014/​09/​08/​setting-up-gameboy-advance-for-retropie/​
 +
 +(il y a plein d'​autres choses utiles et intéressantes!)
 +=== Neo-Geo ===
 +Par défaut, si on lance un jeu neogeo, il y a un chargement, puis un écran noir. 
 +
 +J'ai réussi à lancer un jeu, pour l'​instant la manette n'est pas configurée. Voici la procédure :
 +  - Télécharger la rom NeoGeo (par exemple ici : http://​www.emuparadise.me/​M.A.M.E._-_Multiple_Arcade_Machine_Emulator_ROMs/​Neo-Geo/​15030-download )
 +  - Copier neogeo.zip dans le partage roms/​neogeo-gngeopi
 +  - copier les roms dans le même partage.
 +
 +=Configuration de la manette=
 +Pour la configuration de la manette, il faut trouver le fichier de configuration de gngeo.
 +Pour ma version, il se trouve dans le répertoire home, dans un sous dossier .gngeo, dans le fichier gngeorc.
 +
 +pour se rendre dans ce répertoire,​ puis modifier le fichier, on pourra procéder comme suit : 
 +<code bash>
 +cd ~/.gngeo/
 +nano gngeorc
 +</​code>​
 +
 +Voici mon fichier : 
 +<file bash gngeorc>
 +p1control A=J0B1,​B=J0B0,​C=J0B2,​D=J0B3,​START=J0B9,​COIN=J0B5,​UP=J0a1,​DOWN=J0a1,​LEFT=J0A0,​RIGHT=J0A0,​MENU=J0B8
 +p2control A=J1B1,​B=J1B0,​C=J1B2,​D=J1B3,​START=J1B9,​COIN=J1B5,​UP=J1a1,​DOWN=J1a1,​LEFT=J1A0,​RIGHT=J1A0,​MENU=J1B8
 +</​file>​
 +Le principe du fichier est relativement simple. J0 correspond au joypad (manette) 0, J1 au joypad 1, etc. B0 correspond au bouton 0, B1 au bouton1, etc. Donc A=J0B0 indique que le bouton A de la neogeo est le bouton 0 du joypad 0. Dans mon cas, les boutons sont physiquement numérotés de 1 à 10, donc je réutilise ce nombre auquel je soustrais 1.
 +
 +Pour les directions, ma manette à une croix directionnelle,​ avec deux axes. Du coup, il existe l'axe 0 et l'axe 1. Par essais, j'ai déterminé que l'axe 0 correspond à l'axe gauche-droite,​ et l'axe 1 correspond à l'axe haut-bas.
 +
 +J'ai donc mis //UP=J0a1// et //​DOWN=J0a1//,​ car les deux sont sur le même axe. Si l'axe est inversé, alors on pourra mettre le //a// en majuscule, comme je l'ai fait pour gauche et droite : //​LEFT=J0A0//​ et //​RIGHT=J0A0//​.
 +
 +Kxxx correspond ici à la touche xxx du clavier, il faudra probablement trouver le code ascii de la touche correspondante.
 +
 +Pour déterminer les touches du joypad, on peut utiliser ​ jstest, qui s'​installe comme suit : 
 +<code bash>​sudo apt-get install joystick</​code>​
 +On l'​exécutera par la commande suivante :
 +<code bash>​jstest /​dev/​input/​js0</​code>​
 +Cette commande affichera les sorties du joypad 0, on pourra utiliser js1 pour le 1 et ainsi de suite.
 +
 +J'ai trouvé ce fichier de configuration commenté qui donne quelques détails : 
 +http://​sheasilverman.com/​rpi/​gngeorc
 +
 +Le bouton //MENU// permet d'​afficher un menu de configuration de l'​émulateur,​ et permet de quitter celui ci et revenir à emulationstation.
 +
 +
 +
 +Au cas où, voici le fichier par défaut que j'​avais :
 +<file bash gngeorc>
 +p1control A=K122,​B=K120,​C=K97,​D=K115,​START=K49,​COIN=K51,​UP=K273,​DOWN=K274,​LEFT=K276,​RIGHT=K275,​MENU=K27
 +p2control A=K108,​B=K59,​C=K111,​D=K112,​START=K50,​COIN=K52,​UP=K264,​DOWN=K261,​LEFT=K260,​RIGHT=K262,​MENU=K27
 +</​file>​
 +
 +
 +Une page expliquant un peu la configuration de gngeo : 
 +https://​github.com/​petrockblog/​RetroPie-Setup/​wiki/​GnGeo-Pi
 +Pour l'​instant,​ je ne suis pas parvenu à faire fonctionner l'​autre émulateur NeoGeo, et j'​ignore les différences.
 +Voici une piste :
 +http://​blog.petrockblock.com/​forums/​topic/​neo-geo-not-working-black-screen-only/​
notes.txt · Dernière modification: 24/02/2015 17:07 par sky99