Batocera: Aggiungere e manipolare sistemi

Tags: 

In batocera è possibile modificare il descrittore dei diversi sistemi supportati, ad esempio per aggiungere dei core/emulatori, o per creare sistemi nuovi.
Viene spiegato qui: https://wiki.batocera.org/emulationstation:customize_systems

E' il metodo utilizzato per ri-aggiungere il core di mame0139 al mame, ma vediamo altri 2 esempi che mi sono stati utili:

Permettere alle rom dentro "fbneo" di essere avviate con il mame

Una soluzione piuttosto semplice, ma con una questione avanzata.

Si prende la configurazione base di <fullname>Final Burn Neo</fullname> dentro /usr/share/emulationstation/es_systems.cfg e si copia in un file a parte dentro /userdata/system/configs/emulationstation/es_systems_fbneo.cfg (aggiungendo header e footer). Quindi si cambia la configurazione per aggiungere i core voluti (possiamo prenderli dalla configurazione di mame).
Questo il risultato:

<?xml version="1.0"?>
<systemList>
  <system>
        <fullname>Final Burn Neo</fullname>
        <name>fbneo</name>
        <manufacturer>Arcade</manufacturer>
        <release>2019</release>
        <hardware>arcade</hardware>
        <path>/userdata/roms/fbneo</path>
        <extension>.zip .7z</extension>
        <command>emulatorlauncher %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -gameinfoxml %GAMEINFOXML% -systemname %SYSTEMNAME%</command>
        <platform>arcade</platform>
        <theme>fbneo</theme>
        <emulators>
            <emulator name="libretro">
                <cores>
                    <core default="true">fbneo</core>
                    <core>mame</core>
                    <core>mame0139</core>
                    <core>mame078plus</core>
                </cores>
            </emulator>
            <emulator name="mame">
                <cores>
                    <core>mame</core>
                </cores>
            </emulator>
        </emulators>
  </system>
</systemList>

Fin qui tutto ok ma c'è un problema... dentro il mame standalone non funzionano più gli hotkey standard per uscire o per il meno. Questo avviene perchè quel layer di hotkey è gestito da evmapy, e la sua configurazione è specifica per sistema. Dobbiamo quindi copiare la configurazione per mame su fbneo:

cd /usr/share/evmapy/
cp mame.mame.keys fbneo.mame.keys

Ora possiamo riprovare a lanciare un gioco e andrà tutto.

(Le modifiche a evmapy vanno persistite con il comando batocera-save-overlay, per fargli prendere tutte le modifiche e provarle riavviare la macchina o fare un "batocera-es-swissknife --restart" per riavviare via CLI).

Creare un nuovo sistema "utilities" dove mettere dei miei comandi di shell.

In genere se avete dei comandi di shell per fare robe varie si mette in "ports". Ma io vorrei metterli in un posto separato dove tenere solo i miei tool (in ports al momento ho sempre dei giochi, o comunque tools di terze parti).

Ho creato quindi un sistema "utilities", con questo file es_systems_utilities.cfg:

<?xml version="1.0"?>
<systemList>
  <system>
        <fullname>Utilities</fullname>
        <name>utilities</name>
        <manufacturer>_utilities</manufacturer>
        <release>None</release>
        <hardware>port</hardware>
        <path>/userdata/roms/_utilities</path>
        <extension>.sh .squashfs</extension>
        <command>emulatorlauncher %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -gameinfoxml %GAMEINFOXML% -systemname %SYSTEMNAME%</command>
        <platform>pc</platform>
        <theme>utilities</theme>
        <group>utilities</group>
        <emulators>
            <emulator name="sh">
                <cores>
                    <core default="true">sh</core>
                </cores>
            </emulator>
        </emulators>
  </system>
</systemList>

Ho deciso di mettere le rom in "_utilities" per avere un nome di dir che non si confondesse con gli altri. Oltre a questo ho usato come "manufacturer" _utilities giusto come trucchetto per avere la voce di menu "utilities" all'inizio dell'elenco (visto che l'ho ordinato per manufacturers).

A questo punto però se proverete la nuova configurazione (mettendo un file di shell dentro il path scelto) vedrete che non funziona. Questo perchè batocera, nonostante tutta la configurazione, rileva il sistema ma non ci associa l'emulatore/core "sh".
Francamente non ho capito perchè, anche guardando nei "configgen" non ho capito il motivo.

Alla fine comunque una soluzione semplice è efficace è fare l'associazione via /userdata/system/batocera.conf, aggiungendo queste 2 righe:

utilities.core=sh
utilities.emulator=sh

NOTA: Questa modifica non ha bisogno di batocera-save-overlay, dal momento che viene fatto tutto in /userdata/. Però bisogna fargli aggiornare la collezione via menu e/o fare un "batocera-es-swissknife --restart" per riavviare via cli.

Aggiungi un commento

Scrivi la risposta in lettere (ad esempio "tre" e non "3")