Les thèmes ont une certaine structure de dossiers et de fichiers. Tout vous est décrit ci-dessous.
Tous les fichiers qui composent un thème sont au format XML. C'est un langage simple à utiliser. Il utilise des balises classiques comme <balise></balise> ou des balises auto-fermantes <balise />.
: nouveau
: déprécié, à ne plus utiliser, supprimé dans une future version
Tout thème est composé de pleins de dossiers.
Pour chaque système disponible dans Recalbox, vous avez un dossier contenant tous les images correspondantes au système.
Les systèmes virtuels de base correspondent aux systèmes tels que les favoris, les derniers jeux joués, les jeux multijoueurs, etc.
Voici la liste des systèmes virtuels de base et leur nom de dossier.
| Système virtuel | Nom du dossier |
|---|---|
| Jeux arcade | arcade |
| Tous les jeux | auto-allgames |
| Derniers jeux joués | auto-lastplayed |
| Lightgun | auto-lightgun |
| Multijoueurs | auto-multiplayer |
| Jeux TATE | auto-tate |
| Jeux favoris | favorites |
Les systèmes virtuels par genre correspondent aux genres de jeu que vous récupérez depuis les scraps de vos jeux. Les genres de chacun de vos jeux sont modifiables aussi par vous-même.
Voici la liste des systèmes virtuels par genre et leur nom de dossier.
| Système virtuel | Nom du dossier |
|---|---|
| Action (tous) | auto-action |
| Action - Battle Royale | auto-actionbattleroyale |
| Action - Beat'em up | auto-actionbeatemup |
| Action - Combat | auto-actionfighting |
| Action - Tir à la première personne | auto-actionfirstpersonshooter |
| Action - Jeu de plateformes | auto-actionplatformer |
| Action - Jeu de tir/plateformes | auto-actionplatformshooter |
| Action - Rythme & musique | auto-actionrythm |
| Action - Shoot-em up | auto-actionshootemup |
| Action - Tir avec accessoires | auto-actionshootwithgun |
| Action - Infiltration | auto-actionstealth |
| Aventure | auto-adventure |
| Aventure - Aventure graphique | auto-adventuregraphics |
| Aventure - Film interactif | auto-adventureinteractivemovie |
| Aventure - Aventure 3D temps réel | auto-adventurerealtime3d |
| Aventure - Jeux de survie | auto-adventuresurvivalhorror |
| Aventure - Aventure textuelle | auto-adventuretext |
| Aventure - Nouvelle visuelle | auto-adventurevisualnovels |
| Jeu de plateau | auto-board |
| Casino | auto-casino |
| Jeu grand public | auto-casual |
| Compilation multi-jeux | auto-compilation |
| Démo de la scène démo | auto-demoscene |
| Cartes digitales | auto-digitalcard |
| Jeu éducatif | auto-educative |
| Jeu de société multijoueurs | auto-party |
| Flipper | auto-pinball |
| Puzzle & logique | auto-puzzleandlogic |
| Jeu de rôles (tous) | auto-rpg |
| Jeu de rôles - Jeu de rôle d'action | auto-rpgaction |
| Jeu de rôles - Exploration de donjons | auto-rpgdungeoncrawler |
| Jeu de rôles - Jeux de rôles de sociétés | auto-rpgfirstpersonpartybased |
| Jeu de rôles - Jeux de rôles japonais | auto-rpgjapanese |
| Jeu de rôles - Jeux de rôles massivement multijoueurs | auto-rpgmmo |
| Jeu de rôles - Jeux de rôles tactique | auto-rpgtactical |
| Simulation | auto-simulation |
| Simulation - Construction et gestion | auto-simulationbuildandmanagement |
| Simulation - Chasse et pêche | auto-simulationfishandhunt |
| Simulation - Simulation de vie | auto-simulationlife |
| Simulation - Science fiction | auto-simulationscifi |
| Simulation - Véhicule de simulation | auto-simulationvehicle |
| Sport (tous) | auto-sports |
| Sport - Compétition sportive | auto-sportcompetitive |
| Sport - Combat/Sport violent | auto-sportfight |
| Sport - Course | auto-sportracing |
| Sport - simulation sportives | auto-sportsimulation |
| Stratégie (toutes) | auto-strategy |
| Stratégie - Exploration, expansion, exploitation & extermination | auto-strategy4x |
| Stratégie - Artillerie | auto-strategyartillery |
| Stratégie - Batailles automatique | auto-strategyautobattler |
| Stratégie - Arène de combats multi-joueurs | auto-strategymoba |
| Stratégie - Real-time strategy games | auto-strategy-artillery |
| Stratégie - Jeux de stratégie en temps réel | auto-strategyrts |
| Stratégie - Stratégie au tour par tour | auto-strategytbs |
| Stratégie - Défense de tours | auto-strategytowerdefense |
| Stratégie - Jeu de guerre | auto-strategywargame |
| Trivia | auto-trivia |
Les systèmes vistuels arcade correspondent aux constructeurs arcade référencés.
Voici la liste des systèmes virtuels arcade par constructeur et leur nom de dossier.
| Système virtuel | Nom du dossier |
|---|---|
| Acclaim | auto-arcade-acclaim |
| Atari | auto-arcade-atari |
| Atlus | auto-arcade-atlus |
| BanPresto | auto-arcade-banpresto |
| Capcom | auto-arcade-capcom |
| Capcom CPS1 | auto-arcade-capcom-cps1 |
| Capcom CPS2 | auto-arcade-capcom-cps2 |
| Capcom CPS3 | auto-arcade-capcom-cps3 |
| CAVE | auto-arcade-cave |
| Data East | auto-arcade-dataeast |
| Exidy | auto-arcade-exidy |
| International Games System (I.G.S) | auto-arcade-igs |
| IREM Software Engineering | auto-arcade-irem |
| Incredible Technologies | auto-arcade-itech |
| Jaleco | auto-arcade-jaleco |
| Kaneko | auto-arcade-kaneko |
| Konami | auto-arcade-konami |
| Midway | auto-arcade-midway |
| Mitchell | auto-arcade-mitchell |
| NAMCO | auto-arcade-namco |
| Neo-Geo | auto-arcade-neogeo |
| Nichibutsu | auto-arcade-nichibutsu |
| Nintendo | auto-arcade-nintendo |
| NMK | auto-arcade-nmk |
| Psikyo | auto-arcade-psikyo |
| Raizing | auto-arcade-raizing |
| Sammy | auto-arcade-sammy |
| SEGA | auto-arcade-sega |
| SEGA System 16 | auto-arcade-sega-system16 |
| SEGA System 32 | auto-arcade-sega-system32 |
| Seibu | auto-arcade-seibu |
| SETA | auto-arcade-seta |
| SNK | auto-arcade-snk |
| TAITO | auto-arcade-taito |
| TAITO F3 | auto-arcade-taito-f3 |
| Technōs | auto-arcade-technos |
| TECMO | auto-arcade-temco |
| TOAPLAN | auto-arcade-toaplan |
| VISCO | auto-arcade-visco |
A la racine de n'importe quel thème, vous avez un fichier nommé theme.xml. Celui-ci contient des informations concernant les objets généraux tel que la configuration du menu, de la barre d'aide, etc.
Dans chaque système vu dessus, vous aurez un fichier xml (le nom du fichier dépendra de votre envie) qui contiendra les informations du système comme les textes d'informations et les couleurs des 4 barres verticales à droite de votre écran avec le thème par défaut.
Recalbox accepte 2 façons d'écrire les fichiers XML des thèmes.
Ancienne façon :
<theme>
<include>chemin/a/inclure1</include>
<include>chemin/a/inclure2</include>
...
<include>chemin/a/inclureX</include>
<view name="...">
<object>
<property1>valeur</property1>
<property2>valeur</property2>
...
<propertyX>valeur</propertyX>
</object>
...
</view>
...
<view name="...">
<object>
...
</object>
...
</view>
</theme>
Nouvelle façon :
<theme>
<include>chemin/a/inclure1</include>
<include>chemin/a/inclure2</include>
...
<include>chemin/a/inclureX</include>
<view name="...">
<object property1="valeur" property2="valeur" propertyX="valeur" />
...
</view>
...
<view name="...">
<object>
...
</object>
...
</view>
</theme>
La documentation ici présente se focalisera sur la nouvelle façon de concevoir les thèmes. Le contenu exact est décrit dans les autres tutoriels concernant les thèmes.
Chaque système charge et re-interprête le thème. Il faut considérer le thème comme une entité qui va être chargé et totalement re-interprété dans les cas suivants :
<theme> et <view><theme>Concernant cet exemple, tout fichier xml du thème commence se trouve entre les balises <theme></theme>.
Cette balise peut contenir 5 propriétés :
nameLa propriété name indique le nom du thème. Celui-ci peut être différent du nom du dossier du thème. Ce nom sera visible dans la liste des thèmes disponibles.
Exemple :
name="Mon propre thème"
Sans cette propriété, le nom du dossier du thème sera utilisé.
recalboxLa propriété recalbox indique la version minimale de Recalbox auquel le thème peut être utilisé. Ceci vous permet d'indiquer si le thème est compatible avec la version de Recalbox installée.
Exemple :
recalbox="9.2"
Sans cette propriété, le thème pourra être utilisée sur n'importe quelle version de Recalbox.
versionL'attribut version indique la version du thème. Si cette information existe, elle sera visible dans la liste des thèmes disponibles.
Exemple :
version="3.1"
Sans cette propriété, la version du thème ne sera pas affichée dans la liste des thèmes.
compatibilityL'attribut compatibility indique le type d'écran auquel le thème est compatible. Le thème peut être compatible avec un seul type d'écran ou plusieurs.
Liste des valeurs possibles :
hdmi : écrans HDMIcrt : écrans CRTjamma : écrans JAMMAtate : écrans verticaux TATEExemple :
compatibility="hdmi,jamma"
Sans cette propriété, le thème sera considéré comme compatible uniquement hdmi.
resolutionsL'attribut resolutions permet d'indiquer les tranches de résolutions avec lesquelles le thème est compatible. Il peut contenir plusieurs valeurs, séparés par une virgule.
Liste des valeurs possibles :
qvga : résolutions QVGA (<= 288p)vga : résolutions VGA (<= 576p)hd : résolutions HD (<= 920p)fhd : résolutions Full HD (> 920p)Exemple :
resolutions="hd,fhd"
Sans cette propriété, le thème sera considéré comme compatible uniquement hd, fhd.
formatVersion 
La balise formatVersion permet d'indiquer la version du format du contenu régissant le thème.
formatVersion="5"
<view>La balise <view></view> ainsi que les objets enfants sont décrit dans la page des objets.