Toute la configuration lightgun de Recalbox tient dans un fichier XML unique : la liste des jeux compatibles par système, l'émulateur et le core à utiliser, et les surcharges RetroArch (touches, options de core) appliquées du niveau global jusqu'au jeu individuel.
Au lancement d'un jeu, Recalbox :
dolphinbar (Mayflash + Wiimote), guncon2 (Namco GunCon 2) ou jvs (Recalbox JVS) ;Sans pistolet détecté ou si le jeu est inconnu du fichier, le lancement reste strictement normal.
lightgun.xmlLe fichier n'est pas dans votre share : il est livré avec le système, en lecture seule :
/recalbox/share_init/system/.emulationstation/lightgun.xml
Pour le modifier (en SSH), il faut remonter la partition système en écriture. Vos modifications seront écrasées à la prochaine mise à jour de Recalbox — proposez plutôt vos ajouts à l'équipe sur le Discord pour qu'ils profitent à tout le monde.
<?xml version="1.0"?>
<root>
<version>1.0.6 - 18-03-2024</version>
<!-- Touches communes, par type de pistolet -->
<emulatorOptions filter="libretro" guntype="guncon2"> <option … /> </emulatorOptions>
<emulatorOptions filter="libretro" guntype="dolphinbar"> <option … /> </emulatorOptions>
<emulatorOptions filter="libretro" guntype="jvs"> <option … /> </emulatorOptions>
<coreOptions filter="*"> <option … /> </coreOptions>
<!-- Un bloc par système (ou groupe de systèmes) -->
<system name="atomiswave|naomi|naomigd">
<emulatorList>
<emulator priority="1" name="libretro" core="flycast-next" corename="Flycast Next" />
</emulatorList>
<emulatorOptions> <option … /> </emulatorOptions>
<coreOptions> <option … /> </coreOptions>
<gameList>
<emulatorOptions> <option … /> </emulatorOptions>
<game name="houseofthedead2" tested="true">
<emulatorOptions> <option … /> </emulatorOptions>
</game>
</gameList>
</system>
</root>
<emulatorOptions> surcharge retroarchcustom.cfg (les touches), <coreOptions> surcharge retroarch-core-options.cfg (les options du core). Une <option> a toujours deux attributs, name et value.guntype (sur un bloc ou sur une option individuelle) réserve une configuration à un type de pistolet : dolphinbar, guncon2 ou jvs. L'attribut filter la réserve à un émulateur (libretro) ou à un core.<system name="…"> accepte plusieurs systèmes séparés par | (ex. megadrive|segacd). Cas particulier : le bloc mame2003_plus est choisi non pas d'après le système mais quand le core sélectionné est MAME 2003-Plus.<emulatorList> liste les émulateurs utilisables, par priority croissante. C'est ici que le mode lightgun force l'émulateur : par exemple supermodel pour le Model 3, ou flycast-next pour Naomi.<gameList> regroupe des jeux partageant une même surcharge (il peut y en avoir plusieurs par système), <game> porte la configuration d'un jeu précis.Les options s'appliquent en cascade, chaque niveau pouvant surcharger le précédent :
racine (par guntype) → system → gameList → game
GUNP1, GUNP2, GUNP3Chaque pistolet est vu comme une souris. Pour affecter le bon pistolet au bon port du jeu (le joueur 1 est parfois sur le port 2 !), les valeurs GUNP1 à GUNP3 sont remplacées au lancement par l'index réel de la souris correspondante :
<option name="input_player2_mouse_index" value="GUNP1" />
L'attribut name d'un <game> est le nom du jeu aplati : minuscules, uniquement lettres et chiffres (le ! est aussi accepté, pour Bang!), sans espaces, sans articles superflus, sans région ni version :
Duck Hunt (World) v1.1 → Recalbox compare duckhuntworldv11 aux entrées du fichier et trouve duckhunt (recherche par inclusion, la correspondance la plus longue gagne).dhnes → aucune correspondance, pas de mode lightgun.Le nom utilisé est celui affiché dans la liste de jeux (donc le nom scrapé si vous avez scrapé) ; scraper vos jeux est le meilleur moyen d'avoir des noms reconnaissables.
L'attribut tested vaut true (testé et fonctionnel) ou false (testé mais non fonctionnel — le jeu ne sera pas configuré en lightgun). Seuls les jeux tested="true" apparaissent dans le système virtuel LightGun.
Trouvez le bloc <system> du bon système et ajoutez dans sa <gameList> :
<game name="monjeu" tested="true" />
Pour vérifier :
HOME quitte le jeu.Inspirez-vous des jeux existants du fichier. En général il s'agit de déplacer le tir principal/secondaire ou de neutraliser une touche (value="nul") :
<game name="ninjaassault" tested="true">
<emulatorOptions>
<option name="input_player1_gun_trigger_mbtn" value="nul" />
<option name="input_player1_gun_aux_a_mbtn" value="1" />
<option name="input_player1_gun_offscreen_shot_mbtn" value="nul" />
</emulatorOptions>
</game>
Pour les cas compliqués, il faudra le manuel du jeu d'époque et du temps dans les menus de RetroArch — l'art de la surcharge !
Il faut connaître le core à utiliser, déclarer le « device » lightgun du core dans <emulatorOptions> et ses options gun dans <coreOptions> :
<system name="megadrive|segacd">
<emulatorList>
<emulator priority="1" name="libretro" core="genesisplusgx" corename="Genesis Plus GX" />
</emulatorList>
<emulatorOptions>
<option name="input_player2_gun_trigger_mbtn" value="1" />
<option name="input_libretro_device_p1" value="1" />
</emulatorOptions>
<coreOptions>
<option name="genesis_plus_gx_gun_input" value="lightgun" />
<option name="genesis_plus_gx_gun_cursor" value="enabled" />
</coreOptions>
…
</system>
Bon courage !