Batocera and Knulli

After the developers of EmulationStation put so much effort into adding supported systems, the developers of Batocera thought it would be a great idea to then take the time to rip out a bunch of those systems. Based on Batocera, Knulli continues the tradition of leaving out systems. Many of the missing systems use North American names.
Using the below files, you can add these systems back to Batocera and Knulli.

/userdata/system/configs/emulationstation/es_systems_arcade.cfg

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

/userdata/system/configs/emulationstation/es_systems_genesis.cfg

<?xml version="1.0"?>
<systemList>
    <system>
        <fullname>Sega Genesis</fullname>
        <name>genesis</name>
        <manufacturer>Sega</manufacturer>
        <release>1988</release>
        <hardware>console</hardware>
        <path>/userdata/roms/genesis</path>
        <extension>.bin .gen .md .sg .smd .zip .7z</extension>
        <command>emulatorlauncher %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -gameinfoxml %GAMEINFOXML% -systemname %SYSTEMNAME%</command>
        <platform>genesis</platform>
        <theme>genesis</theme>
        <group>genesis</group>
        <emulators>
            <emulator name="libretro">
                <cores>
                    <core default="true">genesisplusgx</core>
                    <core>genesisplusgx-wide</core>
                    <core>picodrive</core>
                </cores>
            </emulator>
        </emulators>
    </system>
</systemList>

/userdata/system/configs/emulationstation/es_systems_tg16.cfg

<?xml version="1.0"?>
<systemList>
    <system>
        <fullname>NEC TurboGrafx-16</fullname>
        <name>tg16</name>
        <manufacturer>NEC</manufacturer>
        <release>1987</release>
        <hardware>console</hardware>
        <path>/userdata/roms/tg16</path>
        <extension>.pce .bin .zip .7z</extension>
        <command>emulatorlauncher %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -gameinfoxml %GAMEINFOXML% -systemname %SYSTEMNAME%</command>
        <platform>pcengine</platform>
        <theme>tg16</theme>
        <emulators>
            <emulator name="libretro">
                <cores>
                    <core>pce</core>
                    <core default="true">pce_fast</core>
                </cores>
            </emulator>
        </emulators>
    </system>
</systemList>

Batocera / Knulli have also been configured to IGNORE the default core settings in the EmulationStation configuration files.

To override the Batocera / Knulli overrides, add the following to bottom of the /userdata/system/batocera.conf file:

arcade.emulator=libretro
arcade.core=fbneo

genesis.emulator=libretro
genesis.core=genesisplusgx

tg16.emulator=libretro
tg16.core=pce_fast

If you are familiar with Batocera / Knulli, I would LOVE to hear why the developers of those platforms decided to take the time to remove so much of the established EmulationStation systems and functionality.


Here is an example of setting more sensible RetroArch hotkeys. Many of the default Batocera / Knulli hotkeys seemed a little nonsensical to me (why would you default to having a hotkey RESTART the game on a commonly-pressed button?), coming from Garlic OS, JELOS, ROCKNIX, etc. Batocera / Knulli ignores many changes in RetroArch, and so if you want to change hotkeys or unbind hotkeys, you again have to resort their override system.
Add the below to the bottom of the /userdata/system/batocera.conf file:

## RetroArch hotkey overrides (RG35XX Plus)

## Set Hotkey button. (Menu button)
global.retroarch.input_enable_hotkey_btn=11

## Exit the current emulator. (Hotkey + Start)
global.retroarch.input_exit_emulator_btn=10

## Toggle the FPS display. (Menu + Y)
global.retroarch.input_fps_toggle_btn=5

## Open RetroArch's Quick Menu. (Menu + X)
global.retroarch.input_menu_toggle_btn=6

## Save current state to the selected slot. (Menu + R2)
global.retroarch.input_save_state_btn=14

## Load the state from the selected slot. (Menu + L2)
global.retroarch.input_load_state_btn=13

## Take a screenshot. (Menu + A)
global.retroarch.input_screenshot_btn=3

## Fast-forward toggle. (Menu + R1)
global.retroarch.input_toggle_fast_forward_btn=8

## Slow-motion toggle.
global.retroarch.input_toggle_slowmotion_btn=nul

## Reset the emulated system.
global.retroarch.input_reset_btn=nul

## Increase the currently selected save state slot.
global.retroarch.input_state_slot_increase_btn=nul

## Decrease the currently selected save state slot.
global.retroarch.input_state_slot_decrease_btn=nul

## Toggle the AI translation service.
global.retroarch.input_ai_service_btn=nul

## Fast-forward (hold).
global.retroarch.input_hold_fast_forward_btn=nul

## Rewind.
global.retroarch.input_rewind_btn=nul

## Next shader.
global.retroarch.input_shader_next_btn=nul

## Previous shader.
global.retroarch.input_shader_prev_btn=nul

## Eject the virtual disc.
global.retroarch.input_disk_eject_toggle_btn=nul

## Select the next disc.
global.retroarch.input_disk_next_btn=nul

## Select the previous disc.
global.retroarch.input_disk_prev_btn=nul

## Advance one frame.
global.retroarch.input_frame_advance_btn=nul

## Slow-motion (hold).
global.retroarch.input_hold_slowmotion_btn=nul

## Record movie toggle.
global.retroarch.input_movie_record_toggle_btn=nul

## Netplay watch toggle.
global.retroarch.input_netplay_game_watch_btn=nul

## Netplay host toggle.
global.retroarch.input_netplay_host_toggle_btn=nul

## OSK toggle.
global.retroarch.input_osk_toggle_btn=nul

## Pause emulation.
global.retroarch.input_pause_toggle_btn=nul

## Input recording toggle.
global.retroarch.input_recording_toggle_btn=nul

## Runahead toggle.
global.retroarch.input_runahead_toggle_btn=nul

## Streaming toggle.
global.retroarch.input_streaming_toggle_btn=nul

## Turbo default button.
global.retroarch.input_turbo_default_button=nul