Faire un thème Recalbox

45 pages · 8 sections
FRENESDE Tout afficher Créer mon thème

Se servir des variables

Afficher le nom d’un jeu, choisir une image selon le système.

Une variable s’écrit ${…} et Recalbox la remplace au moment d’afficher.

<text name="titre">
  <text>Bienvenue sur ${system}</text>
</text>

→ « Bienvenue sur Super Nintendo ».

Dans un chemin d’image : le plus utile

<image name="console" extra="true">
  <path>${root}/data/arts/consoles/${system.name}.png</path>
</image>

Une seule ligne, et chaque système affiche sa propre image. Il suffit que les fichiers portent le nom interne du système : snes.png, megadrive.png

Où chaque variable fonctionne

C’est la règle qui surprend le plus, et elle vient du moteur :

FamilleVues où elle est résolue
${system…}Systèmes et Liste de jeux — une liste appartient toujours à un système
${game…}Liste de jeux et Écran de veille — là où il y a un jeu survolé
${recalbox…} ${settings…} ${hardware…} ${display…}partout

Une variable employée là où elle n’existe pas n’est pas remplacée : le texte brut s’affiche tel quel, ${game.name} compris. Le studio ne propose que celles qui fonctionnent sur la vue en cours.

Quand la ligne survolée n’est pas un jeu

Dans la liste de jeux, le curseur ne traverse pas que des jeux : il passe aussi sur les dossiers et sur les en-têtes de tri, ces intertitres que Recalbox ajoute dès que la liste est triée autrement que par ordre alphabétique. Les ${game…} répondent quand même, mais ils décrivent alors une ligne qui n’a pas de jeu :

Ligne survolée${game.name}${game.releasedate}${game.file.name}
un jeuson nomsa date de sortiele fichier de la rom
un dossierle nom du dossierINCONNUle nom du dossier
un en-tête de tririenINCONNUrien

Un composant qui affiche une donnée du jeu n’a donc plus rien à dire sur ces lignes — et il y reste pourtant affiché, par-dessus le nom du dossier que Recalbox écrit au même moment. Limitez-le aux lignes de jeu :

<text name="sortie" extra="true" showIf="game">
  <text>Sortie : ${game.releasedate}</text>
</text>

Le studio s’en charge : dès qu’un composant emploie une donnée du jeu, sa visibilité passe sur « un jeu ». L’onglet Visibilité du composant permet de la rouvrir aux dossiers et aux en-têtes quand c’est voulu.

${root} — à ne jamais oublier

${root} désigne la racine du thème sélectionné. Sans lui, les chemins sont relatifs au fichier qui les écrit, et votre thème casse dès qu’on le range autrement.

<path>${root}/data/arts/fond.jpg</path>     <!-- ✅ -->
<path>../data/arts/fond.jpg</path>          <!-- fragile -->

Les anciennes variables $…

Vous croiserez dans de vieux thèmes des variables sans accolades :

AncienneCe qu’elle donneÉquivalent actuel
$systemle nom court — « snes »${system.name}
$themele dossier du thème${root}

⚠️ $system et ${system} ne donnent pas la même chose : le premier rend « snes », le second « Super Nintendo ». Elles sont encore acceptées, mais dépréciées : n’écrivez plus que la forme à accolades.

Le tirage au sort

<path>${random.between(fond1.jpg,fond2.jpg,fond3.jpg)}</path>
<fontSize>${random.range(1,10)}</fontSize>

random.between choisit une valeur au hasard dans la liste, random.range un nombre entre deux bornes. Le tirage a lieu au chargement du thème, pas à chaque affichage.