Table of Contents
!! grosse update depuis cette doc… (raspi3, crt-pi shader, compile des emu, utilisation exclusive retroarch car fba-next performant, update distrib , etc…). Faudra que je mette à jour…un jour :D
Présentation
Retropie permet de transformer un raspberry en plateforme d'émulation en rassemblant un ensemble de projet open source: raspbian pour l'OS, emulationstation pour l'habillage / pilotage des émulateurs et plusieurs scripts pour paramétrer l'ensemble.
L'installation peut se faire depuis une rasbian ou directement via une image disque à pousser sur une micro sd.
Je vous propose de décortiquer la configuration que j'utilise. C'est un projet sur mesure pour des pads type 8bitnesdo sans fil et xbox 360 filaire. En gros emulation station, retroarch uniquement et la gestion des pads.
Installation
Rien à signaler , suivre les instructions sur le site officiel de retropie. J'ai utilisé l'image 2.3 pour micro sd.
Paramétrage de base
Principaux fichiers / répertoires:
Système:
- /boot/config.txt: options de boot, partage mémoire gpu/système, overscan.
- /etc/samba/smb.conf: configuration du partage cifs pour ajouter des répertoires par exemple
Emulation:
- /etc/emulationstation/es_system.cfg : permet de paramétrer les systèmes disponibles dans emulasionstation.
- /opt/retropie/configs : contient un repertoire ALL pour la configuration globale de retroarch notamment et un répertoire par système qui surcharge la configuration globale.
- /home/pi/.emulationstation/es_input.cfg&es_settings.cfg: contient la configuration des touches d'emulationstation & du fontend en lui même.
Mes modifications :
1 - utilisation du mode turbo via sudo raspi-config
2- /etc/emulationstation/es_systems.cfg:
- ajout du .cue dans la partie pcengine pour prendre en compte les cdrom
- je n'ai gardé que les sytèmes megadrive, mastersystem , nes , snes & pc engine.
- modification des runcommand.sh 1 en runcommand.sh 4 pour prise en compte correct en 4:3 sur Ècran LCD (j'avais un souci sur mon lcd philips en 1/VGA). Après plusieurs recherche l'impact du 1 vs 4 (VGA vs 720P) est faible.
- utilisation du core alternatif mefnafen_pce_fast_libretro.so pour le système pc engine qui est en fait la dernière version proposée par libretro (0.9.36.1). Attention celà supprime la compatibilité des roms sgx. Par défaut il utilise 242 lignes d'overscan du système pce. Le mapping des boutons pad A & B est parfait contrairement à l'autre core qui nécessite une inversion dans le fichier retroarch pcengine.
3- ajout de repertoires partagées en cifs via samba :
[screenshoot] comment = screenshoot path = /home/pi/RetroPie/screenshoot writeable = yes guest ok = yes create mask = 0644 directory mask = 0755 force user = pi [savestate] comment = savestate path = /home/pi/RetroPie/savestate writeable = yes guest ok = yes create mask = 0644 directory mask = 0755 force user = pi [share] comment = share path = /home/pi/RetroPie/share writeable = yes guest ok = yes create mask = 0644 directory mask = 0755 force user = pi
4- Paramétrage global de retroarch:
/opt/retropie/configs/all # scanline.glsl a un rendu proche de mon slg=HD et prend très peu de ressource. J'ai essayé les autres shaders comme crt-xxx mais ils demandent trop de puissance au raspberry (meme en mode turbo) video_shader = "/opt/retropie/emulators/RetroArch/shader/scanline.glsl" video_shader_enable = true video_shader_dir = /opt/retropie/emulators/RetroArch/shader/ # screenshoot avec le post-processing , notamment scanlines video_gpu_screenshot = true # on desactuve l'invite d'aide lors d' laccès au menu retroarch rgui_show_start_screen = false # ajout de repertoires dans le partage samba savefile_directory = /home/pi/RetroPie/savestate savestate_directory = /home/pi/RetroPie/savestate screenshot_directory = /home/pi/RetroPie/screenshoot overlay_directory = /opt/retropie/emulators/RetroArch/overlays # l'aspect ratio 6 (Core provided) me donne, combiné au runcommand 4 , un ratio excellent quelques soit l'écran (tv 16/9 full hs, lcd 16/10 et lcd 5/4) aspect_ratio_index = "6"
Spécificité du core pc engine:
ajouté/modifié dans /opt/retropie/configs/all/retroarch-core-options.cfg: pce_initial_scanline = "0" pce_last_scanline = "239"
Paramétrage joypad bluetooth NES30
Lien utilisé pour l'intégration des nes30 en bluetooth (scripts): http://www.open-consoles-news.com/2014/10/raspberry-pi-realiser-une-retro-gaming.html
Pour vérifier que la manette fonctionne correctement , que le dongle bluetooth fonctionne etc… on peut utiliser la commande suivante : sudo hciconfig hci0 sspmode 0. Cette commande permet de s'affranchir de toute la configuration suivante mais n'est pas persistante au reboot.
configuration de emulation station , dans es_input.cfg:
<?xml version="1.0"?> <inputList> <inputConfig type="joystick" deviceName="8Bitdo NES30 GamePad" deviceGUID="0500000038426974646f204e45533300"> <input name="a" type="button" id="2" value="1" /> <input name="b" type="button" id="3" value="1" /> <input name="down" type="axis" id="1" value="1" /> <input name="left" type="axis" id="0" value="-1" /> <input name="pagedown" type="button" id="5" value="1" /> <input name="pageup" type="button" id="4" value="1" /> <input name="right" type="axis" id="0" value="1" /> <input name="select" type="button" id="6" value="1" /> <input name="start" type="button" id="7" value="1" /> <input name="up" type="axis" id="1" value="-1" /> </inputConfig> </inputList>
Ajout d'un sleep 5 dans le lancement de emulationstation pour laisser le temps aux pads bluetooth nes30 de se connecter.
vim usr/bin/emulationstation #!/bin/bash sleep 5 ...
paramétrage retroarch.cfg : la combinaison R1 puis R2 ouvre le menu retroarch. J'utilise uniquement des émulateurs retroarch avec ma retropie dédiée nes30.
/opt/retropie/configs/all ##### INPUT #nes30 p1 input_player1_joypad_index = "0" input_player1_analog_dpad_mode = "3" input_player1_b_btn = "14" input_player1_y_btn = "11" input_player1_select_btn = "17" input_player1_start_btn = "18" input_player1_a_btn = "13" input_player1_x_btn = "12" input_player1_l_btn = "15" input_player1_r_btn = "16" input_player1_up_axis = "-1" input_player1_down_axis = "+1" input_player1_left_axis = "-0" input_player1_right_axis = "+0" input_player1_left = "nul" input_player1_right = "nul" input_player1_up = "nul" input_player1_down = "nul" input_player1_l2_btn = "nul" input_player1_r2_btn = "nul" input_player1_l3_btn = "nul" input_player1_r3_btn = "nul" input_player1_l_x_plus_btn = "nul" input_player1_l_x_minus_btn = "nul" input_player1_l_y_plus_btn = "nul" input_player1_l_y_minus_btn = "nul" input_player1_r_x_plus_btn = "nul" input_player1_r_x_minus_btn = "nul" input_player1_r_y_plus_btn = "nul" input_player1_r_y_minus_btn = "nul" #nes30 p2 input_player2_joypad_index = "1" input_player2_analog_dpad_mode = "3" input_player2_b_btn = "14" input_player2_y_btn = "11" input_player2_select_btn = "17" input_player2_start_btn = "18" input_player2_a_btn = "13" input_player2_x_btn = "12" input_player2_l_btn = "15" input_player2_r_btn = "16" input_player2_up_axis = "-1" input_player2_down_axis = "+1" input_player2_left_axis = "-0" input_player2_right_axis = "+0" input_player2_left = "nul" input_player2_right = "nul" input_player2_up = "nul" input_player2_down = "nul" input_player2_l2_btn = "nul" input_player2_r2_btn = "nul" input_player2_l3_btn = "nul" input_player2_r3_btn = "nul" input_player2_l_x_plus_btn = "nul" input_player2_l_x_minus_btn = "nul" input_player2_l_y_plus_btn = "nul" input_player2_l_y_minus_btn = "nul" input_player2_r_x_plus_btn = "nul" input_player2_r_x_minus_btn = "nul" input_player2_r_y_plus_btn = "nul" input_player2_r_y_minus_btn = "nul" ##### hotkeys input_enable_hotkey_btn = "15" input_menu_toggle_btn = "16"
Informations diverses
Autoconf retroarch:
Mettre des profiles automatique pour retroarch:
Copier les inputs/paramètres spécifiques de la manette dans un nouveau fichier à l'emplacement suivant: /opt/retropie/emulators/RetroArch/configs/
Commandes utiles:
Générér un fichier de configuration retroarch d'une manette (ici j1): /opt/retropie/emulators/RetroArch/installdir/bin/retroarch-joyconfig -j1 » fichier_commandes_pad.conf