Table of Contents

Benchmarking for Batocera Guide

Batocera covers a very complex landscape of both hardware it supports and systems it can emulate. Getting a rough idea of where your hardware stands and what sort of systems you can expect to emulate at full-speed can be extremely difficult for someone not already intimate familiar with the emulation and hardware scenes. Help us help them by providing some easy-to-parse benchmarks so they can make a more informed decision.

Requirements for benchmarking (so as to create a fair and reproducible result):

For Batocera's benchmarking purposes, it's really only necessary to see whether a game is running at full-speed or not. There is no ambiguity with this sort of system and is easy to understand by all.

You can enable the FPS counter by going to SYSTEM SETTINGSFRONTEND DEVELOPER OPTIONSSHOW FPS COUNTER and turning it on.

What is considered "full-speed"?

If you'd like a video example to compare to, watch this excellent one by ETA Prime: https://youtu.be/fQ2H842vnMw

If running a version of Batocera before v35, for systems that might be running a Nvidia card, do try to get the official Nvidia drivers working. If it's really old, you may have to use the legacy build. If the CPU/motherboard is too old for even that, you may have to use an even older version of Batocera (such as 5.26).

Games to test

The point of this list isn't to be exhaustive, but to be representative of the rough lower and upper bounds of an emulated system's capabilities. For this, games that are both low/high-end while still being relatively well-known have been selected. Systems less demanding than SNES are considered to be low-requirement enough that pretty much all x86_64 machines can run them at full-speed. It is suitable to notate just the system variation you benchmarked (with exception to GameCube/Wii as they are nearly the same underlying system).

Take this list as all the available suggested titles for benchmarking. It's recommended to take one or two titles from each tier of “DEMANDING” level, resulting in a benchmarking table that contains five to eight games total. Feel free to exclude systems/titles that don't offer much information. For instance, if a system runs full-speed for both the low-end and high-end titles, only the high-end title needs to be mentioned. Additional titles/systems not mentioned here can be included if you feel they are relevant to the performance of the hardware (or you just happen to have already installed instead). Roughly in order of performance required:

Here's an example benchmark for reference:

Batocera v33

CPU GPU High-end N64 (Goldeneye 007) High-end PSP (Midnight Club: L.A. Remix) Low-end Dreamcast (MvC2) High-end Dreamcast (Sega Rally 2) High-end GameCube/Wii (Auto Modellista) Low-end PS2 (Sonic Riders: Zero Gravity) High-end PS2 (God of War) Low-end Xbox (Jet Set Radio Future) High-end Xbox (Burnout 3: Takedown)
Intel Core i3-4350 Nvidia GTX 750Ti Full-speed Max Full-speed 67% (40 FPS) 5x 2x 1x 4x N/A5)

You can also view the already existing benchmark tables at the "Choose a Desktop/Benchmarks" page. Some of the older benchmarks use a different format, but contributions for older versions of Batocera are still accepted.

Once you have such a file, just throw the file (.csv is fine) onto the Discord or edit it in yourself if you've been granted a Batocera Wiki account.

MangoHUD

Batocera's benchmarking is relatively simple, intentionally so. However, if you'd like to do further benchmarking just for the sake of seeing how your hardware is doing you can utilize the MangoHUD program (Batocera v33 and higher).

In order to activate it, simply change the HEADS UP DISPLAY (in the DECORATIONS submenu) to “PERFORMANCE” in either the MAIN MENUGAME SETTINGS or that system's specific ADVANCED SYSTEM SETTINGS.

MangoHUD has the following keyboard shortcuts:

Advanced MangoHUD configuration

Environment values can be added to the global.hud_custom key in batocera.conf, each value separated by a \n. For example:

## HUD (x86 only)
# game / perf / custom (in that case, configuration is read from hud_custom)
#global.hud=perf
#global.hud_custom=position=bottom-left\nbackground_alpha=0\nlegacy_layout=false\nfont_size=64\nimage_max_width=200\nimage=%THUMBNAIL%\ncustom_text=%GAMENAME%\ncustom_text=%SYSTEMNAME%\ncustom_text=%EMULATORCORE%
# for example, the value for perf is position=bottom-left\nbackground_alpha=0.9\nlegacy_layout=false\ncustom_text=%GAMENAME%\ncustom_text=%SYSTEMNAME%\ncustom_text=%EMULATORCORE%\nfps\ngpu_name\nengine_version\nvulkan_driver\nresolution\nram\ngpu_stats\ngpu_temp\ncpu_stats\ncpu_temp\ncore_load
Notes for older Batocera versions (v32 and v31)
Batocera's benchmarking is relatively simple, intentionally so. However, if you'd like to do further benchmarking just for the sake of seeing how your hardware is doing you can utilize the MangoHUD program (Batocera v31 and higher).

If on Batocera v31 exactly, you'll need to run flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo first.

  1. flatpak install com.valvesoftware.Steam.Utility.MangoHud
  2. From Batocera, launch a libretro game and close it once. This is important.
  3. export DISPLAY=:0.0
  4. /etc/init.d/S31emulationstation stop
  5. Check your logs at stdout.log and work out what the launch command was. For paths that contain special characters or whitespaces, you may need to enclose them in double quotes (“). In case it's not obvious, you can (generally) use the example command below, just adapt it to your system/game.
  6. Then run the run command but with mangohud in front of it, eg. mangohud retroarch -L /usr/lib/libretro/snes9x_libretro.so --config /userdata/system/configs/retroarch/retroarchcustom.cfg --verbose "/userdata/roms/snes/Panel de Pon (Japan) [En by Zuqkeo v1.0].zip"

This will get you the following result on-screen (notice the upper left corner):

In order to quit the game, you can just hit [Alt] + [F4] or run batocera-es-swissknife --emukill. If you'd like to restart ES, run batocera-es-swissknife –-restart.

1)
Special exception here, you should always notate this as GameCube/Wii as their system requirements are similar if not identical; there are a lot of GameCube games which are tougher to emulate than Wii games.
2)
Notably, Star Wars Rogue Squadron III: Rebel Strike is not here as it performs so poorly as to be misrepresentative of how the emulator performs in other demanding titles.
3) , 4)
Indicate whether you are testing with or without shaders already being compiled in a footnote. Results can vary greatly if the emulator is processing shaders for the first time.
5)
The game runs, but only renders a black screen.