Documentation update.

This commit is contained in:
Leon Styhre 2021-06-23 20:14:48 +02:00
parent 876f84a847
commit ee17c34435
3 changed files with 154 additions and 43 deletions

View file

@ -39,6 +39,7 @@ Apart from this, many small improvements and bug fixes are part of the release,
* A notification is now displayed in the grouped custom collections view if a filter is applied to the collection
* Changed the default screensaver type from "dim" to "video" and made the fallback screensaver "dim" instead of "black"
* Moved the video screensaver audio setting to the sound settings menu
* Added support for the Nintendo Switch game system (using the Yuzu emulator)
* Created a new main menu entry for input device settings
* Moved the input device configuration tool to the input device settings menu
* Adjusted the size and position of the various menus to accomodate one additional entry on the screen
@ -54,6 +55,7 @@ Apart from this, many small improvements and bug fixes are part of the release,
* Added a DebugSkipInputLogging option which is intended primarily for development and needs to be manually set in es_settings.xml
* Added the CImg library as a Git subtree and created some utility functions for it (used by the miximage generator and the game launch screen)
* Added a function to ImageComponent to crop fully transparent areas around an image
* Added a CMake option to control whether the VLC video player should be built, and set this to off by default
* Added the NanoSVG library as a proper Git subtree
* Changed the language standard from C++11 to C++14

View file

@ -19,7 +19,7 @@ Any code editor can be used of course, but I recommend [VSCode](https://code.vis
## Building on Unix
The code has some dependencies. For building, you'll need CMake and development packages for cURL, FFmpeg, FreeImage, FreeType, libVLC, pugixml, SDL2 and RapidJSON.
The code has some dependencies. For building, you'll need CMake and development packages for cURL, FFmpeg, FreeImage, FreeType, pugixml, SDL2 and RapidJSON (and optionally VLC).
**Installing dependencies:**
@ -27,20 +27,28 @@ The code has some dependencies. For building, you'll need CMake and development
All of the required packages can be installed with apt-get:
```
sudo apt-get install build-essential git cmake libsdl2-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev libpugixml-dev rapidjson-dev libasound2-dev vlc libvlc-dev libgl1-mesa-dev
sudo apt-get install build-essential git cmake libsdl2-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev libpugixml-dev rapidjson-dev libasound2-dev libgl1-mesa-dev
```
If building with the optional VLC video player, the following packages are also needed:
```
sudo apt-get install vlc libvlc-dev
```
**On Fedora**
First add the RPM Fusion repository which is required for VLC. Go to [https://rpmfusion.org/Configuration](https://rpmfusion.org/Configuration) and download the .rpm package for the free repository, then install it such as this:
Use dnf to install all the required packages:
```
sudo dnf install gcc-c++ cmake SDL2-devel ffmpeg-devel freeimage-devel freetype-devel curl-devel pugixml-devel rapidjson-devel alsa-lib-devel mesa-libGL-devel
```
If building with the VLC video player, add the RPM Fusion repository.
Go to [https://rpmfusion.org/Configuration](https://rpmfusion.org/Configuration) and download the .rpm package for the free repository, then install it as well as VLC:
```
sudo dnf install ./rpmfusion-free-release-33.noarch.rpm
```
Then use dnf to install all the required packages:
```
sudo dnf install gcc-c++ cmake SDL2-devel ffmpeg-devel freeimage-devel freetype-devel curl-devel pugixml-devel rapidjson-devel alsa-lib-devel mesa-libGL-devel vlc vlc-devel
sudo dnf install vlc vlc-devel
```
**On Manjaro**
@ -48,14 +56,24 @@ sudo dnf install gcc-c++ cmake SDL2-devel ffmpeg-devel freeimage-devel freetype-
Use pacman to install all the required packages:
```
sudo pacman -S gcc make cmake pkgconf sdl2 ffmpeg freeimage freetype2 pugixml rapidjson vlc
sudo pacman -S gcc make cmake pkgconf sdl2 ffmpeg freeimage freetype2 pugixml rapidjson
```
If building with the optional VLC video player, the following package is also needed:
```
sudo pacman -S vlc
```
**On FreeBSD**
Use pkg to install the dependencies:
```
pkg install git pkgconf cmake sdl2 ffmpeg freeimage pugixml rapidjson vlc
pkg install git pkgconf cmake sdl2 ffmpeg freeimage pugixml rapidjson
```
If building with the optional VLC video player, the following package is also needed:
```
pkg install vlc
```
Clang/LLVM and cURL should already be installed in the base OS image.
@ -64,7 +82,12 @@ Clang/LLVM and cURL should already be installed in the base OS image.
Use pkgin to install the dependencies:
```
pkgin install git cmake pkgconf SDL2 ffmpeg4 freeimage pugixml rapidjson vlc
pkgin install git cmake pkgconf SDL2 ffmpeg4 freeimage pugixml rapidjson
```
If building with the optional VLC video player, the following package is also needed:
```
pkgin vlc
```
NetBSD ships with GCC by default, and although you should be able to install and use Clang/LLVM, it's probably easier to just stick to the default compiler environment.
@ -73,7 +96,12 @@ NetBSD ships with GCC by default, and although you should be able to install and
Use pkg_add to install the dependencies:
```
pkg_add cmake pkgconf sdl2 ffmpeg freeimage vlc
pkg_add cmake pkgconf sdl2 ffmpeg freeimage
```
If building with the optional VLC video player, the following package is also needed:
```
pkg_add vlc
```
In the same manner as for FreeBSD, Clang/LLVM and cURL should already be installed by default.
@ -124,7 +152,13 @@ cmake .
make
```
To create a debug build, run this instead:
To build ES-DE with the VLC video player in addition to the default FFmpeg player, enable the VLC_PLAYER option, for example:
```
cmake -DVLC_PLAYER=on .
make
```
To create a debug build, run this:
```
cmake -DCMAKE_BUILD_TYPE=Debug .
make
@ -175,7 +209,7 @@ scan-build make -j6
You open the report with the `scan-view` command which lets you browse it using your web browser. Note that the compilation time is much higher when using the static analyzer compared to a normal compilation. As well this tool generates a lot of extra files and folders in the build tree, so it may make sense to run it in a separate copy of the source folder to avoid having to clean up all this extra data when the analysis has been completed.
To build ES with CEC support, add the corresponding option, for example:
To build ES-DE with CEC support, enable the corresponding option, for example:
```
cmake -DCMAKE_BUILD_TYPE=Debug -DCEC=on .
@ -363,7 +397,7 @@ sudo dnf install ./emulationstation-de-1.1.0-x64.rpm
## Building on macOS
EmulationStation for macOS is built using Clang/LLVM which is the default compiler for this operating system. It's pretty straightforward to build software on this OS. The main deficiency is that there is no native package manager, but as there are several third party package managers available, this can be partly compensated for. The use of one of them, [Homebrew](https://brew.sh), is detailed below.
EmulationStation for macOS is built using Clang/LLVM which is the default compiler for this operating system. It's pretty straightforward to build software on this OS. The main problem is that there is no native package manager, but as there are several third party package managers available, this can be partly compensated for. The use of one of them, [Homebrew](https://brew.sh), is detailed below.
As for code editing, I use [VSCode](https://code.visualstudio.com). I suppose Xcode could be used instead but I have no experience with this tool and no interest in it as I want to use the same tools for all the operating systems that I develop on.
@ -385,9 +419,8 @@ Install the required tools and dependencies:
brew install cmake pkg-config nasm fdk-aac libvpx sdl2 freeimage freetype pugixml rapidjson
```
Curl could optionally be installed too, but normally the version shipped with macOS is fine to use.
If building with the optional VLC video player, then run this as well:
Install VLC/libVLC as well:
```
brew install --cask vlc
```
@ -444,6 +477,12 @@ cmake .
make
```
To build ES-DE with the VLC video player in addition to the default FFmpeg player, enable the VLC_PLAYER option, for example:
```
cmake -DVLC_PLAYER=on .
make
```
To generate a debug build, run this instead:
```
cmake -DCMAKE_BUILD_TYPE=Debug .
@ -453,7 +492,7 @@ Keep in mind though that a debug version will be much slower due to all compiler
Running `make -j6` (or whatever number of parallel jobs you prefer) speeds up the compilation time if you have cores to spare.
After building ES-DE and trying to execute the application, there could be issues with finding the dynamic link libraries for VLC as these are not installed into a standard location but rather into the /Applications folder. As such, you may need to set the DYLD_LIBRARY_PATH environmental variable to find the VLC libraries. Note that this is not intended or required for the release build that will be shipped in a DMG installer or if you manually install ES-DE using 'make install'. It's only needed to be able to run the binary from the build directory. The following will of course only be active during your session, and you need to set the variable for each terminal window that you want to start ES-DE from, unless you add it to your shell profile file:
After building ES-DE and trying to execute the application, there could be issues with finding the dynamic link libraries for VLC (assuming VLC is actually enabled for the build) as these are not installed into a standard location but rather into the /Applications folder. As such, you may need to set the DYLD_LIBRARY_PATH environmental variable to find the VLC libraries. Note that this is not intended or required for the release build that will be shipped in a DMG installer or if you manually install ES-DE using 'make install'. It's only needed to be able to run the binary from the build directory. The following will of course only be active during your session, and you need to set the variable for each terminal window that you want to start ES-DE from, unless you add it to your shell profile file:
```
export DYLD_LIBRARY_PATH=/Applications/VLC.app/Contents/MacOS/lib
@ -499,8 +538,8 @@ libSDL2-2.0.0.dylib
libfreeimage.dylib
libfreetype.6.dylib
libpng16.16.dylib
libvlc.dylib
libvlccore.dylib
libvlc.dylib (only if building with the VLC video player)
libvlccore.dylib (only if building with the VLC video player)
```
All except the VLC libraries should be located in /usr/local/lib. The VLC libraries should be located in /Applications/VLC.app/Contents/MacOS/lib/
@ -539,7 +578,7 @@ It's unclear why the first line shows a reference to itself, and this line appar
You of course only need to change the absolute paths to rpaths once, well at least until you replace the libraries in case of moving to a newer version or so.
In addition to these libraries, you need to create a `plugins` directory and copy over the following VLC libraries, which are normally located in `/Applications/VLC.app/Contents/MacOS/plugins/`:
In addition to these libraries, if building with the optional VLC video player, you need to create a `plugins` directory and copy over the following libraries, which are normally located in `/Applications/VLC.app/Contents/MacOS/plugins/`:
```
libadummy_plugin.dylib
@ -572,7 +611,7 @@ On macOS you can install the application as a normal user, i.e. no root privileg
make install
```
This will be the directory structure for the installation:
This will be the directory structure for the installation (the VLC-related files are optional):
```
/Applications/EmulationStation Desktop Edition.app/Contents/Info.plist
@ -754,7 +793,7 @@ cURL (Windows 64 bit binary, the MinGW version even if using MSVC) \
SDL2 (development libraries, MinGW or VC/MSVC) \
[https://www.libsdl.org/download-2.0.php](https://www.libsdl.org/download-2.0.php)
libVLC (both win64 binary and source distributions) \
libVLC (both win64 binary and source distributions) - optional, if building with the VLC video player\
[https://ftp.lysator.liu.se/pub/videolan/vlc](https://ftp.lysator.liu.se/pub/videolan/vlc)
Uncompress the files from the above packages to a suitable directory, for example `C:\Programming\Dependencies`
@ -853,7 +892,7 @@ As there is no standardized include directory structure in Windows, you need to
Make a directory in your build environment tree, for instance under `C:\Programming\include`
Copy the include files for cURL, FFmpeg, FreeImage, FreeType, GLEW, pugixml, RapidJSON, SDL2 and VLC to this directory.
Copy the include files for cURL, FFmpeg, FreeImage, FreeType, GLEW, pugixml, RapidJSON, SDL2 and optionally VLC to this directory.
You may need to create the SDL2 directory manually and copy the header files there.
@ -876,7 +915,7 @@ pugiconfig.hpp
pugixml.hpp
rapidjson/
SDL2/
vlc/
vlc/ (only if building with the VLC video player)
```
**Copy the required library files to the ES-DE build directory:**
@ -909,8 +948,8 @@ glew32.lib
libcurl-x64.dll
libcrypto-1_1-x64.dll (from the OpenSSL package, located in Git MinGW/MSYS2 under \mingw64\bin)
libssl-1_1-x64.dll (from the OpenSSL package, located in Git MinGW under \mingw64\bin)
libvlc.dll
libvlccore.dll
libvlc.dll (only if building with the VLC video player)
libvlccore.dll (only if building with the VLC video player)
pugixml.dll
pugixml.lib
SDL2.dll
@ -922,7 +961,7 @@ VCRUNTIME140.dll (from Windows\System32)
VCRUNTIME140_1.dll (from Windows\System32)
```
In addition to these files, you need libcurl-x64.lib and libvlc.lib, but these are not available for download so you need to generate them yourself from their corresponding DLL files. Do this inside the respective library directory and not within the emulationstation-de folder.
In addition to these files, you need libcurl-x64.lib and libvlc.lib (if building with the VLC video player), but these are not available for download so you need to generate them yourself from their corresponding DLL files. Do this inside the respective library directory and not within the emulationstation-de folder.
libcurl-x64.lib:
```
@ -960,13 +999,13 @@ libfreetype.dll
libpugixml.dll
libSDL2main.a
libssl-1_1-x64.dll (from the OpenSSL package, located in Git MinGW under \mingw64\bin)
libvlc.dll
libvlccore.dll
libvlc.dll (only if building with the VLC video player)
libvlccore.dll (only if building with the VLC video player)
SDL2.dll
vcomp140.dll (From Visual C++ Redistributable for Visual Studio 2015, 32-bit version)
```
**Required files for both MSVC and MinGW:**
**Additional files for both MSVC and MinGW if building with the VLC video player:**
In addition to the files above, you need to copy some libraries from the VLC `plugins` folder to be able to play video files. There is a subdirectory structure under the plugins folder but there is no requirement to retain this as libVLC apparently looks recursively for the .dll files.
@ -1015,10 +1054,16 @@ nmake
For some annoying reason MSVC is the only compiler that creates a debug build by default and where you need to explicitly set the build type to Release.
Unfortunately nmake does not support parallel compiles so it's very slow. There are third party solutions to get multi-core building working with MSVC, but I've not investigated this much. Embrace this as a retro experience as in the 1990s we normally just had a single core available in our computers.
Unfortunately nmake does not support parallel compiles so it's very slow. There are third party solutions to get multi-core building working with MSVC, but I've not investigated this in depth.
Be aware that MSVC links against different VC++ libraries for debug and release builds (e.g. MSVCP140.dll or MSVCP140d.dll), so any NSIS package made from a debug build will not work on computers without the MSVC development environment installed.
To build ES-DE with the VLC video player in addition to the default FFmpeg player, enable the VLC_PLAYER option, for example:
```
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DWIN32_INCLUDE_DIR=../include -DVLC_PLAYER=on .
make
```
**Building ES-DE using MinGW:**
For a release build:
@ -1039,6 +1084,12 @@ For some reason defining the `../include` path doesn't work when running CMake f
The make command works fine directly in PowerShell though so it can be run from the VSCode terminal.
To build ES-DE with the VLC video player in addition to the default FFmpeg player, enable the VLC_PLAYER option, for example:
```
cmake -G "MinGW Makefiles" -DWIN32_INCLUDE_DIR=../include -DVLC_PLAYER=on .
make
```
You run a parallel build using multiple CPU cores with the `-j` flag, for example, `make -j6`.
Note that compilation time is much longer than on Unix or macOS, and linking time is unendurable for a debug build (around 10 times longer on my computer compared to Linux). The debug binary is also much larger than on Unix.
@ -1465,7 +1516,6 @@ This file makes it possible to define rules for where to search for the emulator
The file is located in the resources directory at the same location as the es_systems.xml file, but a customized copy can be placed in ~/.emulationstation/custom_systems, which will override the bundled file.
Here's an example es_find_rules.xml file for Unix:
```xml
<?xml version="1.0"?>
@ -1474,19 +1524,38 @@ Here's an example es_find_rules.xml file for Unix:
<emulator name="RETROARCH">
<rule type="systempath">
<entry>retroarch</entry>
<entry>org.libretro.RetroArch</entry>
<entry>RetroArch-Linux-x86_64.AppImage</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/org.libretro.RetroArch</entry>
<entry>~/Applications/RetroArch-Linux-x86_64.AppImage</entry>
<entry>~/.local/bin/RetroArch-Linux-x86_64.AppImage</entry>
<entry>~/bin/RetroArch-Linux-x86_64.AppImage</entry>
</rule>
</emulator>
<emulator name="YUZU">
<!-- Nintendo Switch emulator Yuzu. -->
<rule type="systempath">
<entry>yuzu</entry>
<entry>org.yuzu_emu.yuzu</entry>
<entry>yuzu.AppImage</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/org.yuzu_emu.yuzu</entry>
<entry>~/Applications/yuzu.AppImage</entry>
<entry>~/.local/bin/yuzu.AppImage</entry>
<entry>~/bin/yuzu.AppImage</entry>
</rule>
</emulator>
<core name="RETROARCH">
<rule type="corepath">
<!-- Compiled from source -->
<entry>~/.config/retroarch/cores</entry>
<!-- Snap package -->
<entry>~/snap/retroarch/current/.config/retroarch/cores</entry>
<!-- Flatpak package -->
<entry>~/.var/app/org.libretro.RetroArch/config/retroarch/cores</entry>
<!-- AppImage and compiled from source -->
<entry>~/.config/retroarch/cores</entry>
<!-- Ubuntu and Linux Mint repository -->
<entry>/usr/lib/x86_64-linux-gnu/libretro</entry>
<!-- Fedora repository -->
@ -1567,6 +1636,15 @@ For reference, here are also example es_find_rules.xml files for macOS and Windo
<entry>%ESPATH%\..\RetroArch\retroarch.exe</entry>
</rule>
</emulator>
<emulator name="YUZU">
<!-- Nintendo Switch emulator Yuzu. -->
<rule type="systempath">
<entry>yuzu.exe</entry>
</rule>
<rule type="staticpath">
<entry>~\AppData\Local\yuzu\yuzu-windows-msvc\yuzu.exe</entry>
</rule>
</emulator>
<core name="RETROARCH">
<rule type="corepath">
<entry>%EMUPATH%\cores</entry>

View file

@ -70,8 +70,6 @@ On Fedora you run this command to install ES-DE, which should automatically reso
sudo dnf install ./emulationstation-de-1.0.0-x64.rpm
```
Note that this requires the RPM Fusion repository as there's a dependency on VLC, which is not part of the standard operating system repo. See [INSTALL-DEV.md](INSTALL-DEV.md#building-on-unix) for details on how to add this.
**Installing on macOS and Windows**
There's not really much to say about these operating systems, just install ES-DE as you would any other application. On maCOS it's via the .dmg drag-and-drop installer, and on Windows it's just a normal application installer.
@ -385,6 +383,30 @@ For instance `topgunnr.7z` will be expanded to `Top Gunner`.
This is used by the TheGamesDB scraper where the expanded file names are used for game searches. (Screenscraper natively supports searches using the MAME names). It's also quite nice to have the gamelist populated with the expanded game names even before any scraping has taken place.
#### Nintendo Switch
The emulator for Nintendo Switch is Yuzu, which is distributed as a Snap package, Flatpak package or AppImage on Linux and as a regular installer on Windows. At the moment there is unfortunately no macOS release of this emulator and it's unclear if it can run on BSD Unix.
If installed as a Snap or Flatpak package or if built from source code, ES-DE should be able to easily locate the emulator binary.
But if using the AppImage it's a bit more complicated as there is no real standardized directory for storing these images.
What ES-DE will do is to look for _yuzu.AppImage_ in the system PATH as well as in the following locations:
```
~/Applications/yuzu.AppImage
~/.local/bin/yuzu.AppImage
~/bin/yuzu.AppImage
```
When downloading the AppImage from [https://yuzu-emu.org](https://yuzu-emu.org) it will be named something like `yuzu-20210621-45d9504ea.AppImage`, just rename this to yuzu.AppImage and everything should work correctly.
Note that the name is case sensitive, so _yuzu.appimage_ will not be found by ES-DE.
For Windows, ES-DE will look for _yuzu.exe_ in the system Path as well as in the default installation directory `~\AppData\Local\yuzu\yuzu-windows-msvc\`
Apart from the potential difficulty in locating the emulator binary, there are some special configuration steps required for the emulator, refer to the Yuzu website for more information about this.
#### Commodore Amiga
There are multiple ways to run Amiga games, but the recommended approach is to use WHDLoad. The best way is to use hard disk images in `.hdf` or `.hdz` format, meaning there will be a single file per game. This makes it just as easy to play Amiga games as any console with game ROMs.
@ -536,15 +558,15 @@ grep steam ~/.local/share/applications/*desktop | grep rungameid
This of course assumes that you have menu entries setup for your Steam games.
## Emulator setup
## RetroArch setup
ES-DE is a game browsing frontend and does not provide any emulation by itself. It does however come preconfigured for use with emulators as setup in the `es_systems.xml` file. By default it's primarily setup for use with [RetroArch](https://www.retroarch.com) but this can be modified if needed. If you're interested in customizing your es_systems.xml file, please refer to the [INSTALL-DEV.md](INSTALL-DEV.md) document which goes into details on the structure of this file and more advanced configuration topics in general.
Installation and configuration of RetroArch and other emulators is beyond the scope of this guide, but many good resources can be found online on how to do this.
A general recommendation regarding installation on Linux though is to try to avoid the versions included in the OS repositories as they're usually quite limited with regards to the number of available cores, and they're usually older versions. Instead go for either the Snap or Flatpak distributions or build from source.
A general recommendation regarding installation on Linux though is to try to avoid the RetroArch releases included in the OS repositories as they're usually quite limited with regards to the number of available cores, and they're usually older versions. Instead go for either the Snap, Flatpak or AppImage distributions or build from source.
The default es_systems.xml file is paired with a file named es_find_rules.xml which tries to find the emulators and cores using some predefined rules. For Unix/Linux this should normally just work, and for macOS it will work as long as RetroArch is installed at the default location /Applications/RetroArch.app. For Windows it's a bit more complicated as there is really no standard location where applications are installed on this operating system, and RetroArch does not add itself to the Path environment variable during installation. In general it's therefore recommended to manually add the RetroArch directory to your Path variable (tip: open Settings from the Start menu and search for _path_).
The default es_systems.xml file is paired with a file named es_find_rules.xml which tries to find the emulators and cores using some predefined rules. For Unix/Linux this should normally just work (except for AppImage, see below), and for macOS it will work as long as RetroArch is installed at the default location /Applications/RetroArch.app. For Windows it's a bit more complicated as there is really no standard location where applications are installed on this operating system, and RetroArch does not add itself to the Path environment variable during installation. In general it's therefore recommended to manually add the RetroArch directory to your Path variable (tip: open Settings from the Start menu and search for _path_).
However the following directories are defined in es_find_rules.xml for Windows, so if you've installed RetroArch to any of these, ES-DE will be able to find it:
@ -557,6 +579,14 @@ C:\Program Files (x86)\RetroArch-Win64\retroarch.exe
C:\Program Files (x86)\RetroArch\retroarch.exe
```
There is also a special case on Linux if using the AppImage release of RetroArch as there is no real standardized directory for storing these images. ES-DE will look for the RetroArch AppImage in the following locations in addition to searching the system PATH:
```
~/Applications/RetroArch-Linux-x86_64.AppImage
~/.local/bin/RetroArch-Linux-x86_64.AppImage
~/bin/RetroArch-Linux-x86_64.AppImage
```
As an alternative, if the emulator is not in your search path, you can either hardcode an absolute path in es_systems.xml or use the %ESPATH% variable to set the emulator relative to the ES-DE binary location. Again, please refer to [INSTALL-DEV.md](INSTALL-DEV.md#es_systemsxml) for details regarding this.
In any instance, ES-DE will display an error notification if attempting to launch a game where the emulator binary is not found. Likewise it will notify if the defined emulator core is not installed. The es_log.txt file will also provide additional details.
@ -1137,9 +1167,9 @@ This option sets the display to use for ES-DE for multi-monitor setups. The poss
This gives you a choice between _Normal_ and _Borderless_ modes. With the borderless being more seamless as the ES-DE window will always stay on top of other windows so the taskbar will not be visible when launching and returning from games. It will however break the alt-tab application switching of your window manager. For normal fullscreen mode, if a lower resolution than the screen resolution has been set via the --resolution command line argument, ES-DE will render in full screen at the lower resolution. If a higher resolution than the screen resolution has been set, ES-DE will run in a window. For the borderless mode, any changes to the resolution will make ES-DE run in a window.
**Video player**
**Video player** _(Only on some builds and operating systems)_
This gives the choice between FFmpeg and VLC, which is applied to the gamelist videos, the media viewer and the video screensaver.
This gives the choice between FFmpeg and VLC, which is applied to the gamelist videos, the media viewer and the video screensaver. The VLC video player is not included by default and is omitted on some builds. If this option is not available in the menu, it means that the FFmpeg video player is in use.
**When to save game metadata**
@ -1159,7 +1189,7 @@ This is really a last-resort setting if ES-DE freezes when launching games. This
**Upscale video frame rate to 60 FPS (FFmpeg)**
With this option enabled, videos with lower frame rates than 60 FPS, such as 24 and 30 will get upscaled to 60 FPS. This results in slightly smoother playback for some videos. There is a small performance hit from this option, so on slower machines it may be necessary to disable it for fluent video playback. This setting has no effect when using the VLC video player.
With this option enabled, videos with lower frame rates than 60 FPS, such as 24 and 30 will get upscaled to 60 FPS. This results in slightly smoother playback for some videos. There is a small performance hit from this option, so on slower machines it may be necessary to disable it for fluent video playback. This setting has no effect when using the VLC video player. If the VLC video player is not included in the ES-DE build, the "(FFmpeg)" text is omitted from the setting name.
**Per game launch command override**
@ -1703,6 +1733,7 @@ Consider the table below a work in progress as it's obvioulsy not fully populate
| stratagus | Stratagus game engine | | |
| sufami | Bandai SuFami Turbo | | |
| supergrafx | NEC SuperGrafx | | |
| switch | Nintendo Switch | Yuzu (Linux and Windows only, not available on macOS) | |
| tanodragon | Tano Dragon | | |
| tg16 | NEC TurboGrafx-16 | RetroArch (Beetle PCE) | Single archive or ROM file in root folder |
| tg-cd | NEC TurboGrafx-CD | RetroArch (Beetle PCE) | |