Crear un tema de Recalbox

45 páginas · 8 secciones
FRENESDE Mostrar todo Crear mi tema

Usar las variables

Mostrar el nombre de un juego, elegir una imagen según el sistema.

Una variable se escribe ${…} y Recalbox la reemplaza en el momento de mostrar.

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

→ « Bienvenue sur Super Nintendo ».

En una ruta de imagen: lo más útil

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

Una sola línea, y cada sistema muestra su propia imagen. Basta con que los archivos lleven el nombre interno del sistema: snes.png, megadrive.png

Dónde funciona cada variable

Es la regla que más sorprende, y viene del motor:

FamiliaVistas donde se resuelve
${system…}Sistemas y Lista de juegos — una lista siempre pertenece a un sistema
${game…}Lista de juegos y Salvapantallas — allí donde hay un juego señalado
${recalbox…} ${settings…} ${hardware…} ${display…}en todas partes

Una variable empleada donde no existe no se reemplaza: el texto en bruto se muestra tal cual, ${game.name} incluido. El studio solo propone las que funcionan en la vista actual.

Cuando la línea resaltada no es un juego

En la lista de juegos, el cursor no recorre solo juegos: también pasa por las carpetas y por los encabezados de ordenación, esos intertítulos que Recalbox añade en cuanto la lista se ordena de otra forma que no sea alfabética. Las ${game…} siguen respondiendo, pero describen entonces una línea que no tiene juego:

Línea resaltada${game.name}${game.releasedate}${game.file.name}
un juegosu nombresu fecha de salidael archivo de la rom
una carpetael nombre de la carpetaDESCONOCIDOel nombre de la carpeta
un encabezado de ordenaciónnadaDESCONOCIDOnada

Un componente que muestra un dato del juego ya no tiene nada que decir en esas líneas — y aun así sigue en pantalla, encima del nombre de la carpeta que Recalbox escribe en ese mismo momento. Limítelo a las líneas de juego:

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

El estudio se encarga de ello: en cuanto un componente emplea un dato del juego, su visibilidad pasa a «un juego». La pestaña Visibilidad del componente permite volver a abrirla a las carpetas y a los encabezados cuando así se desee.

${root} — para no olvidar nunca

${root} designa la raíz del tema seleccionado. Sin él, las rutas son relativas al archivo que las escribe, y tu tema se rompe en cuanto se guarda de otra manera.

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

Las antiguas variables $…

En temas viejos te cruzarás con variables sin llaves:

AntiguaLo que daEquivalente actual
$systemel nombre corto — « snes »${system.name}
$themela carpeta del tema${root}

⚠️ $system y ${system} no dan lo mismo: la primera devuelve « snes », la segunda « Super Nintendo ». Todavía se aceptan, pero están obsoletas: escribe ya solo la forma con llaves.

El sorteo

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

random.between elige un valor al azar de la lista, random.range un número entre dos límites. El sorteo tiene lugar al cargar el tema, no en cada visualización.