* Added initial text shaping support * Fixed some font issues * (Windows) Added initial text shaping support * (macOS) Added initial text shaping support * Disabled building of HarfBuzz-subset on Windows and macOS * (Android) Added initial text shaping support * Added the nl_NL locale to locale/languages * Changed the font VRAM usage calculation to actually only include texture data * Moved the HarfBuzz segment building to a separate function Also implemented segment caching and fixed an issue where missing glyphs were not handled correctly * Moved the text shaping to a separate function * Fixed a text shaping issue when there was a font change for the last character of a string * Added support for the pl_PL locale * Changed two font calculation functions to use shaped text Also consolidated the HarfBuzz segment creation and shaping into a single function * Added a hack to make shaped text wrap somehow correctly * Changed the text shaping function to return the segment vector * Text shaping segments are no longer created by space characters * RTL text segments are now flagged as such * Fixed an issue where text was not correctly centered after line breaks * Reverted some font changes that were not needed after all * Changed to having HarfBuzz set the horizontal glyph advance * Fixed another failure mode for the wrapText shaped text hack * Added a precaution to prevent crashes in case of broken fonts being used * Made accurate text layout work correctly using HarfBuzz * Removed the offensive wrapText hacks and added some optimizations Also changed the three dots to an actual ellipsis Unicode character when abbreviating text * Reverted a change in TextComponent as it caused unforeseen issues * Changed Font::shapeText() to pass the segments vector by reference * Removed a temporary member variable in Font and replaced it with proper argument passing * Fixed a regression where text shaping stopped working * Added sharing of glyph atlas entries between shaped glyph entries that need the same texture * Added support for the ar_EG locale * Some font-related code and comments cleanup * Fixed a source file header typo * Documentation update * Removed a lot of unnecessary text processing * Added the ICU library as a dependency * (Android) Added the ICU library as a dependency * (macOS) Added the ICU library as a dependency * (Windows) Added the ICU library as a dependency * (Windows) Fixed an MSVC compiler warning * Replaced all built-in Unicode case conversion logic and lookup tables with facilities from the ICU library * Documentation update * Updated the pl_PL translations * Added a menu title font size adjustment for the pl_PL translations * Removed support for NetBSD and OpenBSD * Changed a code comment that referred to BSD Unix * Documentation update * Silenced some Clang compiler warnings * Added experimental support for building on Haiku * (Haiku) Added a ScreenScraper platform identifier * (Haiku) Added support for the Sony PlayStation Portable (psp) game system * (Haiku) Added support for the ScummVM Game Engine (scummvm) game system * Documentation update * Updated the pl_PL translations * Changed ScreenSaver to use TextComponent instead of using Font facilities directly * Changed Window to use TextComponent instead of using Font facilities directly * Changed ButtonComponent to use TextComponent instead of using Font facilities directly * Changed SliderComponent to use TextComponent instead of using Font facilities directly * Reverted ButtonComponent and SliderComponent to render the debug overlays themselves * Changed DateTimeEditComponent to use TextComponent instead of using Font facilities directly * Minor code cleanup * Changed TextEditComponent to use TextComponent instead of using Font facilities directly * Changed Font::buildTextCache() and Font::renderTextCache() to protected functions * Changed a compiler silencing option to only apply to Clang * (Haiku) Updated CMake configuration to make ES-DE build on Haiku Nightly (but no longer on R1/beta4) * Documentation update * (Haiku) Added find rule configuration for RetroArch Also added a single core for testing purposes * Removed direct use of Font::wrapText() from OptionListComponent, TextEditComponent and TextListComponent * Removed direct use of Font::wrapText() from TextComponent * Fixed an issue where ComponentList could generate elements with negative widths * Added an assertion to GuiComponent::setSize() to check for negative mSize values * DateTimeEditComponent no longer renders the debug overlay unless there is a string to display * (FreeBSD) Added support for building with DEINIT_ON_LAUNCH * (FreeBSD) Added the man page to the CPack configuration * (FreeBSD) Added support for rebooting and powering off from inside ES-DE * (FreeBSD) Added fallback method to locate binary * Added layout and line wrapping support for shaped text and for mixing of LTR and RTL scripts * Fixed a special line wrapping scenario where a trailing space should be removed * (Windows) Fixed some MSVC compiler warnings * Fixed some Clang compiler warnings * Fixed an issue where theme names in the theme downloader could get abbreviated * Added support for the ca_AD locale * Documentation update * (Android) Fonts and locales are now copied earlier than the other assets as HarfBuzz and libintl need them earlier in the startup process * Documentation update * Added support for the de_DE locale * (Android) Added a new default find rule entry for Flycast as its application ID has been changed * Documentation update * Fixed an issue where text shaping could be permanently disabled after editing text * Fixed a potential issue where globally disabling text shaping could cause space detection to fail * Added a check for whether a text element has a width defined when the container property is set * (Android) Changed ePSXe to use %ROM% instead of %ROMSAF% * (Haiku) Added support for the PDF viewer * Updated the el_GR.po, es_ES.po, fr_FR.po, it_IT.po, ja_JP.po, ru_RU.po and zh_CN.po locale files * Documentation update * (Haiku) Added correct installation directories to the CMake configuration * (Haiku) Changed to correct installation directories * (Haiku) Added support for the correct system resource directories * (Haiku) Made sure es-pdf-convert is found under all circumstances * Updated the fr_FR translations * Updated the es_ES translations * Updated the it_IT translations * Added a menu title font size adjustment for the it_IT translations * Updated the ja_JP translations * Updated the zh_CN translations * Fixed an issue where scraping using TheGamesDB would crash the application * Added an extra check in OptionListComponent to avoid potential crashes * Removed support for the ca_AD locale * Added a code comment clarification in FileSystemUtil * Updated the pl_PL translations * Some minor code modernization in MameNames * Fixed an issue where returning from a game would sometimes make the helpsystem use the dimmed theme properties * (Haiku) Added a resource file * Added a menu title font size adjustment for the de_DE translations * (Haiku) Added support for some game systems * (Haiku) Added a HaikuPorts recipe * (Haiku) Fixed an URI issue in the HaikuPorts recipe * Documentation update * (Haiku) Added configuration for a number of game systems * Updated the it_IT translations * Documentation update * (Haiku) Updated the srcGitRev value in the HaikuPorts recipe * (Haiku) Added configuration for a number of game systems * Documentation update * (Haiku) Updated the srcGitRev value in the HaikuPorts recipe * (Haiku) Added configuration for a number of game systems * Documentation update * (Haiku) Added configuration for a number of game systems * Documentation update * (Haiku) Updated the srcGitRev value in the HaikuPorts recipe * Added basic configuration support and menu entries for theme localization * Changed a theme loading debug message * (linear-es-de) Fixed an issue where the system logo for saturnjp was incorrectly showing the western variant * (modern-es-de) Fixed an issue where the system logo for saturnjp was incorrectly showing the western variant * Updated the it_IT translations * Added support for using language variables in the theme configuration * Added localization support to DateTimeComponent * Added translations for the automatic collection names when used as theme system variables * Added localization support for the theme game counter * Added theme contextual hinting to the custom collection summary text in CollectionSystemsManager Also added translation support for a string that was previously missed * Added localization support to the label entries in capabilities.xml * Fixed a regression where horizontal text containers would sometimes not work correctly * Fixed an issue where text elements defined as gamecount using the systemdata property could not scroll horizontally * Added support for including theme files from within the colorScheme and fontSize tag pairs * Added translations for the automatic collection names (short name versions) when used as theme system variables * Fixed an incorrect code comment in CollectionSystemsManager * Added translations for the name and fullname systemdata properties for the text element * Added translation support for the metadata property for the text element * Updated all locale (.po) files with the theme engine localization additions * (linear-es-de) Added translations for en_US, en_GB and sv_SE * Documentation update * Updated the fr_FR translations * (linear-es-de) Added translations for fr_FR * Updated the ja_JP translations * Updated the zh_CN translations * (modern-es-de) Added translations for en_US, en_GB, fr_FR and sv_SE * Updated the es_ES translations * Updated the ro_RO translations * (linear-es-de) Added translations for es_ES * (linear-es-de) Added translations for ro_RO * (slate-es-de) Added translations for en_US, en_GB and sv_SE * (linear-es-de) Updated the es_ES translations * (modern-es-de) Updated the fr_FR translations * (linear-es-de) Some minor translation changes * (modern-es-de) Added translations for ro_RO * (slate-es-de) Added translations for ro_RO * Updated the it_IT translations * Updated the pt_BR translations * (linear-es-de) Added translations for it_IT * (modern-es-de) Decreased the helpsystem entry spacing * (modern-es-de) Added translations for es_ES and it_IT * (slate-es-de) Added translations for es_ES, fr_FR and it_IT * (linear-es-de) Added translations for pt_BR * (modern-es-de) Added translations for pt_BR * (slate-es-de) Added translations for pt_BR * (Haiku) Added support for the c64, plus4 and vic20 systems * Documentation update * (Haiku) Updated the srcGitRev value in the HaikuPorts recipe * Updated SDL to 2.30.6 on Android, Windows, macOS and the Linux AppImage builds * Added an ICU filter configuration file * (macOS) Reduced the ICU library size via a data filter file * (Windows) Reduced the ICU library size via a data filter file * Updated the ru_RU translations * (linear-es-de) Added translations for ru_RU * (modern-es-de) Added translations for ru_RU * (slate-es-de) Added translations for ru_RU * Added a menu title font size adjustment for the ru_RU translations * Removed an unnecessary element resize in ScrollableContainer * Fixed a line breaking issue * Added theme engine translations for 'unknown' metadata values for developer, publisher, genre and players * Added theme engine translations for 'never' and 'unknown' date values * (linear-es-de) Added translations for ja_JP and zh_CN * (modern-es-de) Added translations for ja_JP and zh_CN * (slate-es-de) Added translations for ja_JP and zh_CN * Updated all locales with new theme engine translations * Fixed an issue where the text element defaultValue property no longer worked correctly * (modern-es-de) Added some capitalized default metadata values * Documentation update * pdated the el_GR translations * (linear-es-de) Updated the system metadata * (linear-es-de) Added sv_SE translations for all system hardware types * Updated the de_DE translations * Updated the pl_PL translations * Bundled the July 2024 release of the Mozilla TLS/SSL certificates * Updated the MAME index files to include ROMs up to MAME version 0.269 * (linear-es-de) Added translations for pl_PL * Added the VirtualXT RetroArch core as an alternative emulator for the dos and pc systems * Added the Stella 2023 RetroArch core as an alternative emulator for the atari2600 system * Removed support for the ar_EG, de_DE, el_GR and nl_NL locales and moved their .po files to an archive directory * Documentation update * (modern-es-de) Added translations for pl_PL * (slate-es-de) Added translations for pl_PL * Updated SDL to 2.30.7 on Android, Windows, macOS and the Linux AppImage builds * Updated the fr_FR translations * Added support for the new Lime3DS binary names on Linux, macOS and Windows * Added some missing find rules for Lime3DS * (Windows) Added 'Shortcut' as an alternative emulator for the switch system Also added the .lnk file extension * Added jgenesis as an alternative emulator for the famicom, gamegear, gb, gbc, genesis, mastersystem, megacd, megacdjp, megadrive, megadrivejp, nes, segacd, sfc, snes and snesna systems on Linux and Windows * Documentation update * Added izapple2 standalone as an alternative emulator for the apple2 system on Linux and Windows * (Android) Added support for the Microsoft Windows (windows) game system using the Winlator emulator * (Android) Added Winlator PRoot Cmod standalone as an alternative emulator for the windows system * Documentation update * (Android) Added support for the PC Arcade Systems (pcarcade) and Taito Type X (type-x) game systems * Bumped the version to 3.1.0 * (modern-es-de) Eliminated an annoying debug message * (linear-es-de) Added some missing metadata files * (linear-es-de) Added some missing sv_SE translations * Updated the Winlator emulator names * Documentation update * Documentation update for the 3.1.0 release * Updated latest_release.json for the 3.1.0 release * Fixed a typo in the changelog * Documentation update * (Haiku) Updated the srcGitRev value in the HaikuPorts recipe * Bumped the version to 3.1.1-alpha * Video player resources are now completely freed up after finishing view transitions * Changed a rounding in ScrollableContainer to slightly decrease the risk of glyphs getting cut off at the bottom of the container * Added the Nanum Square Neo Korean font * Added support for the ko_KR locale * Fixed an issue where newly entered ScreenScraper username and password values were positioned incorrectly vertically in the account settings menu * Documentation update * Changed the position of the ko_KR language * Changed the ja_JP position in the languages file * Fixed an issue where attempting to view media for a game that had no downloaded media paused the playback of all static theme videos * Documentation update * Added support for the de_DE locale * Updated the fr_FR translations * Documentation update * Updated the de_DE translations --------- Co-authored-by: Leon Styhre <leon@leonstyhre.com>
24 KiB
ES-DE Frontend - Frequently Asked Questions
What's the correct name for the application? ES-DE, EmulationStation etc?
As of the 3.0.0 release the official name for the project and application is ES-DE Frontend or simply ES-DE. This originally stood for EmulationStation Desktop Edition as the project originated from the RetroPie fork of EmulationStation in 2020, and was originally intended for desktop computers. However the application has now changed so much that it would just cause confusion to keep the EmulationStation name. During a transition period EmulationStation Desktop Edition will be included as a subtitle on the splash screen and mentioned in some documentation entries, but long term this will be dropped entirely. The red version of the EmulationStation logo will however remain as it's part of the application legacy.
Is this software available for free, and is it open source?
ES-DE is available for free on Windows, macOS and Linux and it's released under the MIT open source license. For Android it's a paid app available via Patreon, the Samsung Galaxy Store and Huawei AppGallery and this port is partially closed source.
Which operating systems are supported?
ES-DE is officially supported on Android, Windows, macOS and multiple Linux distributions including Ubuntu, Fedora, Arch, Manjaro, SteamOS etc. It's also semiofficially supported on some secondary platforms like FreeBSD, the Raspberry Pi and Haiku although these ports may not always be up to date and you may have to build ES-DE yourself.
What is the relationship between ES-DE and RetroDECK?
ES-DE and RetroDECK are completely separate projects, but we collaborate to give the best possible user experience. RetroDECK bundles ES-DE with all emulators in the same Flatpak so you don't need to update emulators separately or set Flatpak permissions manually. It's a good idea to read the Specific notes for Steam Deck section of the User guide if ES-DE has been installed via RetroDECK. Note however that RetroDECK can also be used on regular Linux desktops and not only on the Steam Deck.
What is the relationship between ES-DE and EmuDeck?
EmuDeck is an installer that installs ES-DE and a number of emulators. There is no relationship between the two projects apart from this, and it's not recommended to use EmuDeck as this will lead to a non-standard installation and can cause a lot of other issues as well. Instead it's recommended to setup your emulators manually which will allow you to configure everything exactly to your liking.
What game systems/platforms and emulators are supported by ES-DE?
See the Supported game systems section at the bottom of the User guide where there's a table listing all supported systems/platforms and emulators.
Why can't I press the up button in menus to jump to the bottom row and vice versa?
Menus in ES-DE are not lists but grids, sometimes there is only a list but sometimes there are buttons beneath the list. Enabling the up and down buttons to wrap around would therefore not work consistently as it would sometimes jump to the last row of the list and sometimes to a button, requiring a different number of button presses depending on the menu layout. This type of contextual navigation feels very weird in practice, especially when you have to press the up button twice to get to the bottom of a list. The solution is instead to use the shoulder buttons (which will jump six rows), or the trigger buttons (which will jump to the first and last row). These buttons work consistently throughout the application and avoid the strange side effects just mentioned.
I'm using SteamOS and my language settings are not reflected in ES-DE, how can I get language auto-detection to work?
SteamOS does not setup the environment correctly in game mode so it's not possible for ES-DE to detect your configured language. As such you need to manually select your language inside ES-DE using the Application Language option in the UI Settings menu.
Can I change the system sorting to not sort by full system names?
Yes the systems sorting configuration file can be selected via the Systems sorting option in the UI Settings menu. There are four such files bundled with ES-DE to sort by "Release year", "Manufacturer, release year", "Hardware type, release year" and "Manufacturer, hardware type, release year". If you don't want to use any of the bundled files then you can create your own custom sorting file and place it into the ~/ES-DE/custom_systems/ directory. More details about this setup can be found in the es_systems_sorting.xml section of the Building and advanced configuration document.
There is also a handy custom sorting generator available at this location to help you create the XML file:
https://docs.google.com/spreadsheets/d/1aCmCpE08ooFd_Ea0soEjYEyPPpy2pvly7-ZW6xykhFQ/edit#gid=511646442
I'm missing some systems like SNES MSU-1 and WiiWare, could those get added to ES-DE?
To keep the system count within reason hack systems and e-shop systems are not included and there are no plans to add them in. This would include things like PSP Minis, PlayStation Store, WiiWare, SNES MSU-1, Sega Mega Drive MSU-MD, ROM Hacks and so on. It's possible to add such games to the regular systems though, for example by placing them inside their own folders if you want to clearly separate them from the rest of the games. You could also create custom collections for these games.
I don't like the default emulator for a certain system, how can I choose an alternative?
ES-DE comes preconfigured with support for many alternative emulators, see the What's new in ES-DE v1.2 video on the ES-DE YouTube channel for a brief overview of how this works. More emulators are continuously being added with each release.
I'm on Windows and ES-DE can't find my emulators, what is wrong?
On Windows ES-DE is shipped as a portable installation and as a regular installer. If you're using the portable installation you need to drop your emulators inside the Emulators directory. Make sure to read the README.txt file directly in the ES-DE folder for more details. For the regular installer many emulators do not provide a method to inform ES-DE where they are installed, so you will need to add their installation directories to the Path environment variable in Windows. It's strongly recommended to read the Specific notes for Windows section of the User guide before attempting to setup and use ES-DE on Windows.
I'm on Windows and ES-DE refuses to start, is the application broken?
You're probably missing the OpenGL drivers required to run ES-DE. Try to download and install the latest drivers for your graphics card. If you have a really old GPU this may not work though, and you may have to go for OpenGL software rendering instead. How this is setup is described in the Specific notes for Windows section of the User guide. There have also been a few reports of ES-DE refusing to start or displaying excessive graphics corruption when using Intel Iris Xe GPUs. This is seemingly caused by driver bugs and will have to be resolved by Intel. Running the same hardware on Linux seems to work fine.
I'm on Windows and there is only a black screen shown on startup or when launching a game, is there a way to fix this?
This behavior has been observed for some specific AMD GPUs in the past. In some instances there is only a black screen on startup and in some instances the application starts and runs correctly but launching a game only shows a black screen. The issue is seemingly caused by GPU driver bugs and it only affects Windows as Linux works fine with the same hardware. The workaround is to make ES-DE run in windowed mode. You accomplish this by using the --resolution flag and setting the width to one pixel wider than your screen resolution. So if for instance running at a 1280x800 display resolution, run ES-DE such as this: ES-DE.exe --resolution 1281 800
The emulators don't seem to be properly configured?
ES-DE acts strictly as a frontend, it does not interfere with the emulator configuration. The only instance when ES-DE passes specific options to an emulator is when there is no choice, like when fullscreen mode can't be enabled except via a command line option, or when a flag is needed to place the emulator in batch mode to work properly with a frontend. So you need to configure your emulators separately. This includes your controllers as well since the controller configuration inside ES-DE will have no effect on the emulators.
On game launch the screen just flashes black and the game won't start, how do I solve this?
This is almost always caused by either corrupt ROMs/disc images or by missing emulator BIOS files (which have to be installed separately from ES-DE).
How do I exit back from the emulators to ES-DE?
This is related to the two questions above, ES-DE does not perform any emulator configuration or general system configuration. So you would either need to configure an exit button combination inside your emulator, or use a third party tool to map for instance Alt + F4 or Command + Q to a certain button combination on your controller. If you use RetroArch then it's easy to setup a button combination to exit back to ES-DE, which will apply to all cores. Refer to the RetroArch documentation or their support channels on how to accomplish this.
Why does it take a long time for ES-DE to resume after I've exited a game?
With a few notable exceptions like the Valve Steam system, ES-DE will wait for emulators and games to fully exit before it resumes. Some emulators take quite some time to fully exit (sometimes even after their application windows have been destroyed). This may make it seem as if ES-DE is hanging although it's actually waiting for the launched child process to exit. Another reason for a delayed resume is if a custom event script is executed on game end which itself takes a long time to run. If you have such a custom setup then there is a way to work around this by executing scripts as background processes. How this is accomplished is documented in the Custom event scripts section of the Building and advanced configuration document.
I have many games with multiple files, is there a way to show these as single entries?
Yes this is supported for both single-disc games using a .bin/.cue structure for instance, or for multi-file/multi-disc games where .m3u files are used for emulator disc swapping. See the Directories interpreted as files section of the User guide for details on how to configure this.
I see both .bin and .cue files for many of my games, how can I hide the unnecessary files?
See the question above for a possible solution. Another approach would be to hide the game files you don't want to see using the metadata editor. Yet another solution which is actually recommended is to convert your games to the .chd format. This combines the .bin/.cue files into a single file that is also compressed, leading to space savings. Just be aware that you can't combine multi-disc games into a single .chd file. A custom systems configuration entry could also be created, but that is not really recommended or required due to the solutions just mentioned. The reason why .bin files are included in the first place is that some emulators can launch these files directly, and some users have game collections comprised of such files. If the .bin files were filtered out in the bundled configuration, then all these users would have their games removed from within ES-DE next time they upgrade the application.
When I hide a game using the metadata editor it's not really getting hidden, is this a bug?
No, by default games are not removed from the gamelists when they are hidden and are instead only marked with a much lower opacity. You need to disable the setting Show hidden games from the Other Settings menu to make them disappear entirely. The reason this option is not disabled by default is that new users could very easily make a mistake by hiding some files accidentally without realizing it, only to have the entries being immediately removed from the gamelist view. It's also good practice to hide all your games with this option enabled and verify that it's all correct before going ahead and disabling it.
I can't find a ROM directory setting in the user interface, so how do I relocate my games?
There is no need for such a setting as ES-DE will not start unless it finds at least one game. So you simply need to move your ROM directory to its new location using your operating system's file manager or terminal and then the next time you start ES-DE you will be shown a dialog where you can enter the new directory. Optionally you can manually change the ROMDirectory setting in ~/ES-DE/es_settings.xml
What are miximages precisely and why don't they get updated when I change my miximage settings?
As the name implies these are images, and more specifically they are generated by ES-DE from scraped or manually downloaded media. Depending on what is available for a certain game the miximage is built from a combination of a screenshot, marquee, 3D box (or box cover as fallback) and physical media. If no screenshot is available then no miximage will be created, all other image types are optional. By default miximages are generated when scraping, but it's also possible to update them using the built-in offline generator. This tool can be found at the bottom of the Miximage Settings menu. So after changing any miximage settings, either rescrape or run the offline generator and your miximages will be updated accordingly. More details about this topic can be found in the Miximage Settings section of the User guide.
Is there a way to customize existing systems, and/or to add more systems than those shipped by default?
Yes it's possible to both customize existing systems that are part of the bundled configuration as well as to add more systems than those shipped with ES-DE. Almost nothing is hardcoded in the application so there is a huge flexibility when it comes to such configuration. How this is done is covered in the Game system customizations section of the User guide. Just make sure to never modify the es_systems.xml and es_find_rules.xml files included in the application installation directory as these will be overwritten when upgrading ES-DE in the future. Always place your customizations in ~/ES-DE/custom_systems/ as is also described in the user guide.
Can I use the Steam release of RetroArch?
This release of RetroArch has multiple technical issues so it's not officially supported and its use is not recommended. If you still insist on using it you can make custom configuration entries for your game systems which is pretty straightforward as it's partly prepared for in the bundled configuration. Refer to the Using the Steam release of RetroArch section of the User guide for how to accomplish this. There you can also read about the technical issues you can expect to experience when using this release of RetroArch.
How do I add more themes?
You would normally use the built-in theme downloader to install additional themes. This utility can be found in the UI Settings menu. There is also a web version of the themes list which contains a number of additional themes not available via the downloader interface. Themes can also be updated via the downloader which is a recommended activity to perform every now and then, especially after upgrading to a newer ES-DE release as there may have been new systems added.
I added some EmulationStation themes manually but they don't seem to show up inside ES-DE?
EmulationStation themes are not supported by ES-DE. If you want to use a theme from Batocera, Recalbox, RetroBat, RetroPie etc. then it first needs to be ported to the ES-DE theme engine. If you place a non-supported theme in the ES-DE/themes/ directory then this will be ignored on startup, meaning it will not be selectable from the UI Settings menu.
I used to be a Batocera/Recalbox user and ES-DE can't seem to find some of my games?
ES-DE uses mostly the same system names as these other frontends, but there are some exceptions for historical reasons. For example Nintendo GameCube is called gc ES-DE while being named gamecube in Batocera and Recalbox. The same is true for some other systems like n3ds vs. 3ds for Nintendo 3DS. See the Supported game systems section at the bottom of the User guide where there's a table listing the system names that ES-DE expects.
Can ES-DE update itself automatically when a new release becomes available?
There is a built-in application updater that works with the Linux AppImage releases. And if using the AUR release updates are handled via the operating system's package manager. Likewise if using RetroDECK, then ES-DE is updated as part of the overall RetroDECK Flatpak. For Windows and macOS the application updater will download the latest version (as of ES-DE 2.2.0) but you need to manually perform the upgrade. The process to upgrade ES-DE is covered in the Upgrading to a newer release section of the User guide. If you find the update notification messages annoying you can change the frequency of update checks between Always, Daily, Weekly, Monthly or Never from the Other Settings menu.
I can't find any game media links in the gamelist.xml files, where is this data stored?
ES-DE works differently compared to EmulationStation when it comes to handling of game media. There are no links in the gamelist.xml files, instead media files are matched against the ROM/game file names which makes for a much simpler, faster and completely portable setup. Migrating game media from EmulationStation (and potentially from other frontends as well) can be accomplished quite easily. Make sure to also read the Migrating from EmulationStation section of the User guide to avoid data loss if running ES-DE with existing data from EmulationStation.
It seems like gamelist.xml files in the ROM directory tree are not getting loaded?
These files are not loaded by default, only files placed in ES-DE/gamelists/ are processed. If you insist on also looking for gamelist.xml files in the ROM directory tree then you can enable the LegacyGamelistFileLocation setting in es_settings.xml as explained in the Settings not configurable via the GUI section of the Building and advanced configuration document.
Can I use an external scraper application instead of the built-in scraper?
Yes you could for example use Skyscraper, Skraper or ARRM.
There is a video on the official ES-DE YouTube channel on how to use Skraper with ES-DE:
https://www.youtube.com/watch?v=23LLH96P7PE
It's also recommended to read the Manually copying game media files section of the User guide for more details on where ES-DE expects game media to be stored.
My controller isn't working in ES-DE, is there a way to fix this?
If the controller works in other applications and games but not in ES-DE, then you may be able to get it to run in ES-DE as well. The required setup is described in detail in the Adding custom controller profiles section of the Building and advanced configuration document. If this procedure does not work, then support for your controller is probably missing in the SDL library that ES-DE uses for low-level input management. In this case you can request that it gets added via the SDL issue tracker, which will ensure that it will work in future ES-DE releases. Although not guaranteed to work, an alternative solution is to have Steam running in parallel to ES-DE and using the Steam Controller functionality to present the controller as a virtual device in ES-DE. You don't need to launch ES-DE via Steam for this to work, it's enough if Steam is running in the background. If going for this, make sure to read the next question below, and also note that the Steam approach only seems to work on Linux and Windows, and not on macOS.
Why is every controller button press registered twice in ES-DE?
There are two main reasons why double input is received in ES-DE, either because Steam is running and Steam Input with Desktop Layout mappings is enabled, or due to buggy controller drivers where two devices are registered in parallel by the operating system. In the former case, enabling the Steam Input functionality will by default also enable keyboard input to be sent whenever a button is pressed on the controller. As ES-DE by default reads both the keyboard and controller events this will be registered as double or conflicting input. To disable this functionality, go into the Steam Settings interface, then select the Controller tab followed by the Edit button for the Desktop Layout option. Make sure to remove all keyboard mappings and the problem should disappear. An alternative solution is to add ES-DE as a Non-Steam game and launch it via the Steam application in which case the keyboard events will be automatically disabled (that's how it's normally done on the Steam Deck for instance). Making sure Steam is shut down while ES-DE is running is another possible solution. Yet another solution is to enable the Ignore keyboard input option in the Input Device Settings menu, although this is generally not recommended.
The second reason for double input is buggy controller drivers. This seems to only occur with wireless controllers but it's possible that it also happens with wired devices. As ES-DE auto-configures all devices, every button press will in practice be received twice. The easiest solution to this problem is to enable the option Only accept input from first controller in the Input device settings menu, but the drawback of this is that all other attached controllers will also be ignored. A more proper workaround is to blacklist the redundant controller device, see the previous question above as blacklisting is essentially a custom controller profile entry. Note that neither of these approaches will affect the emulators/games launched from ES-DE, it only applies to the ES-DE application itself.
I'm missing a feature, how can I make a request to have it added?
First check the project Kanban board which contains an overview of planned future features and search for the functionality you would like to see added. Chances are there is already a card on the board describing what you intended to request. You can also check the Roadmap document which contains a list of planned major features. If you can't find the feature you're looking for, then you can request it either via adding an issue directly to the Kanban board, or by asking for it in our Discord server.
I want to setup a gaming appliance based on a single-board computer, can I use ES-DE for this?
Yes this is possible, although this is not the primary use case for ES-DE. As the application is not intended to be the sole user interface for the computer there is no built-in functionality to manage operating system settings and emulator settings for instance. ES-DE also generally requires a desktop environment to run, which means a window manager and a sound server. You can however use KMS/direct framebuffer access on Linux if you build with the DEINIT_ON_LAUNCH flag as explained in the Building on Unix section of the INSTALL.md document. This would in theory allow ES-DE to be a drop-in replacement for RetroPie EmulationStation for example.