Recommended video: Batocera Nation's excellent "How to Install Bezels in Batocera".
In the 80s and 90s, most video game screens had a 4:3 aspect ratio. Nowadays, screens mostly use a 16:9 ratio, which means that they provide extra space on the sides compared to a 4:3 aspect ratio.
Rather than stretching out the 4:3 image to fit into a 16:9 model, you can fill the extra space with a background image that provides an even more immersive experience. You can simulate the looks of an old TV set, or even a background that matches the game you are playing. We call this type of decoration a bezel.
On SBCs, not every system and emulator supports bezels. Most Retroarch cores should support the right bezel out-of-the-box. Standalone cores and more modern system often do not support bezels or do not need any, because the systems already use 16:9 ratio.
Since v33, decorations on x86_64 and RPi 4 can be used on most emulators!
The DECORATION menu provides you several options for this:
AMBIANCE options that simulate an retro TV set or an old arcade alleyUPDATES & DOWNLOADS → THE BEZEL PROJECT. The Bezel Project bezels do not provide viewport co-ordinate information. They are designed to be used with integer scaling turned on on a standard 16:9 1080p display and will not scale properly with alternate resolutions as the other provided decorations do.
You can also add your own bezels to Batocera.
Example of a well known arcade game, with theBezelProject on (and curvature shader applied).
If you have a nice TV with a 4K resolution 3840×2160, or if you use an ultra-wide monitor, or if you basically use emulators with a resolution that is above 1920×1080 (larger, or taller), you might have distorted bezels, The reason is that Batocera ships default bezels with a HD 1920×1080 resolution. To fix that, several options, you can either:
mame.bezel_stretch=1 in your batocera.conf for each emulator you want to stretch, or global.bezel_stretch=1 if you want to enable it for all systems.Turning on bezel stretching for high resolutions has a significant impact on emulation performance.
If you have a TV with 720p resolution, you might also have issues with distorted bezels. You can attempt to resolve this by making the following two changes in the Batocera menu:
/userdata/ folder, if it's not already there create a directory called decorations (next to roms, bios, …) decorations folder, create a new directory, let's call it mybezelsmybezels decoration is available and select it/userdata/ bezels take priority).In Batocera, you can create:
You can have all four at the same time. In case your ROM/system selection matches more than one option, Batocera will apply the rules in the order listed above. If there is no suitable bezel, no bezel will be displayed.
A bezel is composed of 2 files. A .png file and a .info file. See explanations below.
TVsIan has created a script which can automatically calculate the required .info files based on the transparent parts of the bezel's .png file. Read its usage instructions here.
Bezels for a specific game on a specific system must be placed in the games/<system>/ directory and have the same name as the ROM.
Example: mybezels/games/snes/mario.png and mybezels/games/snes/mario.info
With this example, your bezel will be used for the game ROM mario only on SNES. If you have a ROM named mario on GB or NES, it will not be displayed.
Bezels for specific games on all systems must be placed in the games/ directory and have the same name as the ROM.
Example: mybezels/games/mario1.png and mybezels/games/mario1.info
In that case, if you have two ROM files named mario1, one for SNES and one for GB, both will display your bezel.
Bezels for specific systems must be placed in the systems directory and have the same name as the system.
Example: mybezels/systems/snes.png and mybezels/systems/snes.info
The default bezel must be at top level and have the name default.png and default.info
Example:
Create the file mybezels/default.png.
A size of 1920×1080 is recommended.
The bezel will be drawn over the emulator rendering. Thus, you must keep transparent parts on the image.
The .info file is a text file describing how the image must be displayed over the emulator.
width: width of the imageheight: height of the imagetop: top/left/bottom/right define the marge in pixel let to render the emulator.left: top/left/bottom/right define the marge in pixel let to render the emulator.bottom: top/left/bottom/right define the marge in pixel let to render the emulator.right: top/left/bottom/right define the marge in pixel let to render the emulator.opacity: a value between 0.0 and 1.0 to define the transparency of the imagemessagex: horizontal position of game messages (when a state is saved for example)messagey: vertical position of game messages (when a state is saved for example){
"width":1920,
"height":1080,
"top":2,
"left":241,
"bottom":1,
"right":243,
"opacity":0.7000000,
"messagex":0.220000,
"messagey":0.120000
}
Batocera v33 and higher now support being able to use a custom image overlaid on top of your decoration:
This can be useful for two applications:
A/B/C/X/Y/Z buttons on my controller??)
To set the tattoo globally, press [START] and navigate to GAME SETTINGS → DECORATIONS → SHOW TATTOO OVER BEZEL and set it to whichever option is preferred. To set a tattoo for a particular system, go to that system's gamelist, press [SELECT] and navigate to ADVANCED SYSTEM SETTINGS → DECORATIONS → SHOW TATTOO OVER BEZEL. If the DECORATIONS menu is not present then decorations, and by extension tattoos, cannot be used on that system yet.
This can also be configured manually in batocera.conf:
# Enable tattoos for all systems: you can choose between 'system' (controller mappings per system), 'custom' (add your own PNG) or '0' to disable. global.bezel.tattoo=system # Display the tattoo in the upper left corner (can be either NW, NE, SW or SE): global.bezel.tattoo_corner=NW # PNG (transparent backgrounds work best) location: global.bezel.tattoo_file=/userdata/system/my_logo.png # Specify a different tattoo for a specific system (overriding the default): gbc.bezel.tattoo_file=/userdata/system/batocera-logo-transparent.png # Disable the tattoo for a specific system (overriding the default): snes.bezel.tattoo=0
The corner selection can be different for each system: look at the example below with NW for GB and SW for FBNeo, each of them with their system tattoo selection:
In case you'd like to make your own, the source for the system controller tattoos can be found here: https://github.com/batocera-linux/batocera-controller-overlays
It is possible that this may happen if you have a special custom command for mounting the ROMs folder, such as:
sharenetwork_cmd1=mount.cifs -o username=mylogin,password=mymdp //servername/share3/roms /userdata/Server_Roms
this could interfere with the system list being properly loaded in the content downloader. To workaround this, temporarily use internal storage, download the bezels, and re-setup the custom NAS commands.
Using the regular ROMS@IP-ADDRESS… syntax also works.