Ta console¶
Romule parle à une console portable Android par adb. Il a été construit face à une AYN Thor sous l'émulateur Eden, mais l'appareil et l'émulateur sont des profils, pas des chemins écrits en dur.
Appairage en Wi-Fi¶
L'assistant de premier démarrage demande d'abord comment la console est reliée — avec ou sans câble — et ne montre que le chemin correspondant. Les réglages contiennent le même assistant pas à pas. En résumé :
- Sur la console — Paramètres → Système → Options pour les développeurs → Débogage sans fil, à activer. Pas d'options développeur ? Paramètres → À propos du téléphone, touche Numéro de build sept fois.
- Sur la console — dans l'écran de débogage sans fil, touche Associer
l'appareil à l'aide d'un code. Laisse la fenêtre ouverte : le code expire
quand elle se ferme. Elle affiche un code à six chiffres et une adresse du
type
192.168.1.42:37105. - Dans Romule — saisis cette adresse et ce code, puis valide l'appairage. Romule se connecte ensuite tout seul, en commençant par cette adresse-là : sur beaucoup d'appareils, le port d'appairage et le port de connexion sont le même. Si ce n'est pas le cas, il essaie un lien laissé par une session précédente, ce que les consoles annoncent en mDNS, puis le port 5555.
- Sur la console (seulement si aucune piste n'a abouti) — ferme la fenêtre du code. L'écran de débogage sans fil affiche derrière elle sa propre ligne « Adresse IP et port », et ce n'est pas la même : le port d'appairage ne sert qu'une fois. Recopie celle-là dans Romule, puis Connecter la console.
Une fois connectée, la console est reconnue toute seule ensuite.
Une fois la connexion faite, le panneau ne demande plus rien : il montre ce que la console a répondu — son nom, son adresse, sa version d'Android, son niveau de batterie, depuis combien de temps le lien tient. Ces informations ne peuvent pas s'afficher si la console n'a pas répondu, ce qui les rend plus utiles qu'un simple « connectée ».
Sous Docker, l'étape 4 est la règle
La console annonce son port de connexion en mDNS, et le multicast ne traverse pas le pont Docker. Depuis un conteneur, Romule ne peut donc pas le deviner : il faut le lire sur l'écran de la console. Sur une installation directe, la découverte marche et l'étape 4 ne s'affiche presque jamais.
Pourquoi deux ports ?
Le débogage sans fil d'Android expose deux services, chacun sur son propre port tiré au hasard :
_adb-tls-pairingn'existe que pendant que la fenêtre du code est affichée. Il sert à échanger un certificat TLS, vérifié par le code à six chiffres, puis il se ferme ;_adb-tls-connectest le démon adb lui-même. Il reste ouvert tant que le débogage sans fil l'est, et n'accepte que les certificats obtenus à l'appairage.
Les deux ports viennent de la même réserve éphémère et sont attribués à quelques instants d'intervalle : ils sont donc souvent voisins, ce dont Romule se sert pour retrouver le second sans le demander.
Deux adresses, deux ports
C'est le point où l'on se trompe. La fenêtre du code donne un port d'appairage, jetable ; l'écran de débogage sans fil en donne un autre, celui de la connexion. Saisir le premier à l'étape 4 échoue sans rien expliquer.
Le Wi-Fi est plus lent
Deux à cinq fois plus lent que l'USB sur les gros transferts. Sans importance pour quelques jeux, très sensible pour une ludothèque entière.
Quand les noms de dossiers ne disent rien¶
Reconnaître gba ou PS1 marche sur une console qui les nomme ainsi, et ne
trouve rien du tout sur une console qui range sous Nintendo - Game Boy Advance
ou psx-eur. Romule regarde donc aussi le contenu : un dossier qui contient
des fichiers de jeu EST un dossier de plateforme, quel que soit son nom.
Trouver la racine ne demande pas de savoir laquelle — ce qui tombe bien,
puisque .cue et .iso sont revendiqués par toutes les consoles à disque à la
fois.
Et si rien de tout cela n'aboutit, l'assistant comme les réglages laissent naviguer sur la console pour désigner le dossier à la main.
USB¶
Branche la console, débogage activé, et appuie sur Détecter. Sous Docker,
l'USB demande devices: - /dev/bus/usb:/dev/bus/usb et Linux — voir
Installation.
Le dossier des jeux¶
Romule le détecte, et l'affiche une fois connecté :
/storage/emulated/0/Switch
Change-le dans Réglages → Ta console si ton émulateur range les jeux ailleurs.
Le Dossier des ROMs — le parent de toutes les autres plateformes, chacune
dans son sous-dossier — est cherché de la même façon, en reconnaissant les
noms de dossiers : gba, snes, mais aussi PS1 pour la PlayStation ou
Sega pour la Mega Drive. Le dossier retenu est celui qui en contient le plus,
et il en faut au moins deux : un dossier Wii isolé ne prouve rien.
C'est ce qui évite d'avoir à taper le chemin. Le déduire du dossier Switch — son parent — n'était juste que sur les consoles rangeant tout côte à côte ; ailleurs, toutes les plateformes comptaient zéro et le sélecteur de la bibliothèque n'affichait plus leurs nombres.
Une plateforme que Romule ne connaît pas¶
Vingt-trois plateformes sont reconnues d'origine, et la liste n'est pas une limite. Réglages → Ta console → Ajouter une plateforme… demande trois choses :
| Champ | Exemple | À quoi il sert |
|---|---|---|
| Nom affiché | Neo Geo |
Ce que tu verras dans le sélecteur de plateformes |
| Dossier sur la console | NeoGeo |
Un sous-dossier du dossier des ROMs ci-dessus |
| Extensions | zip, neo |
Ce qui compte comme un jeu pour cette plateforme |
Cela suffit pour que la plateforme soit analysée, filtrée, comptée et envoyée comme les autres. C'est aussi la réponse quand une console est connue mais que tu la ranges dans un dossier que Romule ne devinerait pas : déclare-la sous le nom que tu emploies réellement.
Les plateformes ajoutées sont rangées sous systemes_perso dans le fichier de
réglages, et suivent tes sauvegardes.
Ce que cela ne fait pas
Déclarer une plateforme n'apprend pas à Romule à lire l'intérieur de ses fichiers. La Switch est la seule qu'il ouvre : les title ID, les liens base/mise à jour/DLC et les mises à jour manquantes viennent de l'analyse du conteneur. Toute autre plateforme — livrée ou ajoutée — est identifiée par son dossier et son extension.
Rangement sur la console¶
Les fichiers Switch sont triés en GAMES, UPDATE et DLC. Le type vient du
contenu du fichier quand Romule sait le lire, pas de son nom — un nom ment
assez souvent : un title ID tronqué, absent, ou un fichier qui annonce un jeu
de base alors qu'il s'agit d'une mise à jour.
Ce qui s'y trouve déjà¶
Lister les jeux de la console rapporte ce qu'elle contient et combien manquent à ta ludothèque, pour ne pas réimporter ce qui est déjà là.
Adb n'est pas installé¶
Romule le dit et donne la commande pour ta plateforme. Rien d'autre ne cesse de fonctionner : la bibliothèque, les jaquettes et l'inventaire n'ont pas besoin d'une console.