Large documentation update.

This commit is contained in:
Leon Styhre 2020-12-26 16:22:33 +01:00
parent db4da4155d
commit bbb8158885
12 changed files with 421 additions and 336 deletions

View file

@ -2,13 +2,13 @@
### Help needed: ### Help needed:
Contributions to ES are very much appreciated as there are many things that need to be implemented and improved. Code commits is only one part of it, as work is also needed on the rbsimple-DE theme as well as thorough application testing. Contributions to ES-DE are very much appreciated as there are many things that need to be implemented and improved. Code commits is only one part of it, as work is also needed on the rbsimple-DE theme set as well as thorough application testing.
A review of the CMake configuration files would also be helpful. Although the building and package generation works more or less correctly, there are some hacks and similar in the CMakeLists.txt files that need improving by someone who really knows how this software package works. A review of the CMake configuration files would also be helpful. Although the building and package generation works more or less correctly, there are some hacks and similar in the CMakeLists.txt files that need improving by someone who really knows how this software package works.
Work is also needed to get ES-DE into the repositories of the various supported operating systems. For example Debian, Fedora, FreeBSD, NetBSD and OpenBSD. This is an area where I have no experience so help with this would be fantastic. Work is also needed to get ES-DE into the repositories of the various supported operating systems. For example Debian, Fedora, FreeBSD, NetBSD and OpenBSD. This is an area where I have no experience so help with this would be fantastic.
Regarding testing, it's impossible for me to test every game system as rbsimple-DE has support for more than a 100 different systems. There could be issues with the configuration template files, or within ES itself. So more testing is needed! Regarding testing, it's impossible for me to test every game system as rbsimple-DE has support for more than a 100 different systems. There could be issues with the configuration template files, or within ES-DE itself. So more testing is needed!
In general, a thorough review of [es_systems.cfg_unix](resources/templates/es_systems.cfg_unix), [es_systems.cfg_macos](resources/templates/es_systems.cfg_macos) and [es_systems.cfg_windows](resources/templates/es_systems.cfg_windows) would be great! In general, a thorough review of [es_systems.cfg_unix](resources/templates/es_systems.cfg_unix), [es_systems.cfg_macos](resources/templates/es_systems.cfg_macos) and [es_systems.cfg_windows](resources/templates/es_systems.cfg_windows) would be great!
@ -30,7 +30,7 @@ This plan is under constant review so expect it to change from time to time. Sti
#### v1.2 #### v1.2
* Decals highlighting things like favorite games, completed games etc. (will require theme support) * Badges highlighting things like favorite games, completed games etc. (will require theme support)
* On-screen keyboard * On-screen keyboard
* Different button graphics and names applied depending on controller type (Xbox, PlayStation and SNES style) * Different button graphics and names applied depending on controller type (Xbox, PlayStation and SNES style)
* Web proxy support for the scraper * Web proxy support for the scraper
@ -44,7 +44,7 @@ This plan is under constant review so expect it to change from time to time. Sti
* Complete overhaul of the grid view style * Complete overhaul of the grid view style
* A nice and useful grid view implementation in rbsimple-DE * A nice and useful grid view implementation in rbsimple-DE
* Better shader support (more adaptive to screen resolution, higher performance, cleaner code) * Better shader support (more adaptive to screen resolution, higher performance, cleaner code)
* Improve text and font functions, e.g. faster and cleaner line wrapping code * Improve text and font functions, e.g. faster and cleaner line wrapping
* Flatpak and Snap support on Linux * Flatpak and Snap support on Linux
#### v1.4 #### v1.4
@ -80,7 +80,7 @@ To see which features have been implemented in previous versions, refer to [RELE
### Coding style: ### Coding style:
The coding style for EmulationStation-DE is mostly a combination of the Linux Kernel style (although that's C it's close enough to C++ as far as I'm concerned) and Google's C++ guidelines. The coding style for ES-DE is mostly a combination of the Linux kernel style (although that's C it's close enough to C++ as far as I'm concerned) and Google's C++ guidelines.
Please refer to these documents here: Please refer to these documents here:
@ -94,23 +94,23 @@ https://google.github.io/styleguide/cppguide.html
* Line break is Unix-style (line feed only, no carriage return) * Line break is Unix-style (line feed only, no carriage return)
* Do not leave trailing whitespaces at the end of the lines (a good source code editor should have a setting to automatically trim these for you) * Do not leave trailing whitespaces at the end of the lines (a good source code editor should have a setting to automatically trim these for you)
* When breaking up long lines into multiple lines, consider what could be useful data to grep for so you don't break in the middle of such a string * When breaking up long lines into multiple lines, consider what could be useful data to grep for so you don't break in the middle of such a string
* Comments always in C++ style, i.e. // instead of /* */ * Comments always in C++ style, i.e. `//` instead of `/* */`
* Comments should be proper sentences, starting with a capital letter and ending with a dot * Comments should be proper sentences, starting with a capital letter and ending with a dot
* Use K&R placements of braces, read the Linux Kernel coding style document for clarifications * Use K&R placements of braces, read the Linux kernel coding style document for clarifications
* Always use spaces between keywords and opening brackets, i.e. `if ()`, `for ()`, `while ()` etc. * Always use spaces between keywords and opening brackets, i.e. `if ()`, `for ()`, `while ()` etc.
* Indentation of switch/case statements is optional, but it's usually easier to read the code with indentations in place * Indentation of switch/case statements is optional, but it's usually easier to read the code with indentations in place
* Use `std::string` or `std::vector<char>` instead of `char *` or `char []` unless there is a specific reason requiring the latter * Use `std::string` or `std::vector<char>` instead of `char *` or `char []` unless there is a specific reason requiring the latter
* Actually, try to use C++ syntax in general instead of C syntax, another example would be `static_cast<int>(someFloatVariable)` instead of `(int)someFloatVariable` * Actually, try to use C++ syntax in general instead of C syntax, another example would be `static_cast<int>(someFloatVariable)` instead of `(int)someFloatVariable`
* If the arguments (and initializer list) for a function or class exceeds 4 items, arrange them vertically to make the code easier to read * If the arguments (and initializer list) for a function or class exceeds 4 items, arrange them vertically to make the code easier to read
* Always declare one variable per line, never combine multiple declarations of the same type * Always declare one variable per line, never combine multiple declarations of the same type
* Name local variables with the first word in small letters and the proceeding words starting with capital letters, e.g. myExampleVariable * Name local variables with the first word in small letters and the proceeding words starting with capital letters, e.g. `myExampleVariable`
* Name member variables starting with a small 'm', e.g. mMyMemberVariable * Name member variables starting with an `m` such as `mMyMemberVariable` and name static variables with an `s` such as `sMyStaticVariable`
* Use the same naming convention for functions as for local variables, e.g. someFunction() * Use the same naming convention for functions as for local variables, e.g. `someFunction()`
* Inline functions makes perfect sense to use, but don't overdo it by using them for functions that won't be called very frequently * Inline functions makes perfect sense to use, but don't overdo it by using them for functions that won't be called very frequently
* Never put more than one statement on a single line (there are some exceptions though like lambda expressions and possibly switch statements) * Don't put more than one statement on a single line (there are some exceptions though like lambda expressions and possibly switch statements)
* Avoid overoptimizations, especially if it sacrifices readability, makes the code hard to expand on or is error prone * Avoid overoptimizations, especially if it sacrifices readability, makes the code hard to expand on or is error prone
* For the rest, check the code and have fun! :) * For the rest, check the code and have fun! :)
### Building and configuring: ### Building and configuring:
Please refer to the [INSTALL.md](INSTALL.md) file for details on everything related to building EmulationStation Desktop Edition. Please refer to [INSTALL.md](INSTALL.md) for details on everything related to building ES-DE.

View file

@ -19,7 +19,7 @@ Nils Bonenberger
# Licenses # Licenses
Please find the individual license files inside the `licenses` directory. There is also additional license information in the headers of the source files. Please find the individual license files inside the `licenses` directory. There is also additional license information in the headers of most source files.
# Libraries # Libraries
@ -75,6 +75,9 @@ https://fonts.google.com/specimen/Open+Sans
MAME ROM information \ MAME ROM information \
https://www.mamedev.org https://www.mamedev.org
CA certificates (for TLS/SSL support on Windows) \
https://wiki.mozilla.org/CA
# rbsimple-DE theme # rbsimple-DE theme

View file

@ -844,14 +844,70 @@ The %ESPATH% variable is explained later in this document.
Following this, optionally copy any existing gamelists and game media files to the removable media. By default these files should be located here: Following this, optionally copy any existing gamelists and game media files to the removable media. By default these files should be located here:
`f:\ES-Home\.emulationstation\gamelists\` \ ```
`f:\ES-Home\.emulationstation\downloaded_media\` f:\ES-Home\.emulationstation\gamelists\
f:\ES-Home\.emulationstation\downloaded_media\
```
You now have a fully functional portable emulator installation! You now have a fully functional portable emulator installation!
The portable installation works exactly as a normal installation, i.e. you can use the built-in scraper, edit metadata etc. The portable installation works exactly as a normal installation, i.e. you can use the built-in scraper, edit metadata etc.
## CA certificates and MAME ROM information
**CA certificates:**
There are some files shipped with ES-DE that need to be pulled from external resources, the first one being the CA certificate bundle to get TLS/SSL support working on Windows.
The CA certificates shipped with ES-DE come directly from the curl project but they're originally supplied by the Mozilla foundation. See [https://wiki.mozilla.org/CA](https://wiki.mozilla.org/CA) for more information about this certificate bundle.
The latest version can be downloaded from [https://curl.se/docs/caextract.html](https://curl.se/docs/caextract.html)
After downloading the file, rename it from **cacert.pem** to **curl-ca-bundle.crt** and move it to the certificates directory so that it looks like this:
```
emulationstation-de/resources/certificates/curl-ca-bundle.crt
```
**MAME ROM info:**
This is a bit tricky as the data needs to be converted to an internal format used by ES-DE. The original file is huge and most of the information is not required.
Go to [https://www.mamedev.org/release.php](https://www.mamedev.org/release.php) and select the Windows version, but only download the driver information in XML format and not MAME itself. This file will be named someting like **mame0226lx.zip** and unzipping it will give you a file name such as **mame0226.xml**.
Move the XML driver file to the resources/MAME directory and then convert it to the ES-DE internal format:
```
cd emulationstation-de/resources/MAME
mv mamebioses.xml mamebioses.xml_OLD
mv mamedevices.xml mamedevices.xml_OLD
../../tools/mame_create_index_files.sh mame0226.xml
mv mamebioses.xml mamebioses.xml_NEW
mv mamedevices.xml mamedevices.xml_NEW
../../tools/mame_merge_index_files.sh mamebioses.xml_OLD mamebioses.xml_NEW mamebioses.xml
../../tools/mame_merge_index_files.sh mamedevices.xml_OLD mamedevices.xml_NEW mamedevices.xml
diff mamebioses.xml mamebioses.xml_OLD
diff mamedevices.xml mamedevices.xml_OLD
rm *NEW *OLD mame0226.xml
```
You need **xmlstarlet** installed for these scripts to work.
The diff command is of course used to do a sanity check that the changes look reasonable before deleting the old files. This is an example for the BIOS file when going from driver version 0221 to 0226:
```
diff mamebioses.xml mamebioses.xml_OLD
1c1
< <!-- Last updated with information from MAME driver file mame0226.xml -->
---
> <!-- Last updated with information from MAME driver file mame0221.xml -->
51d50
< <bios>kpython</bios>
```
The reason to not simply replace the BIOS and devices files with the new version is that we want to retain entries from all older MAME versions as otherwise older ROM sets used on older MAME versions will having missing information. This is so as the MAME project sometimes remove older entries when they're reorganizing the ROM sets. By merging the files we retain backwards compatibility but still support the latest MAME version. To clarify, this of course does not affect the emulation itself, but rather the filtering of BIOS and device files inside ES-DE. The mamenames.xml file containing the translation of MAME ROM names to the full game names does not suffer from this problem as it's cumulative, which is why it is simply overwritten.
## Configuration ## Configuration
**~/.emulationstation/es_systems.cfg:** **~/.emulationstation/es_systems.cfg:**

View file

@ -2,8 +2,6 @@
EmulationStation Desktop Edition is a cross-platform graphical front-end for emulators with controller and keyboard navigation. EmulationStation Desktop Edition is a cross-platform graphical front-end for emulators with controller and keyboard navigation.
As the name implies, this software is intended to be used on desktop computers. There is no support planned for Android or iOS or for any other closed software ecosystems.
Although there are multiple forks of EmulationStation in existence, the goal of this edition is to make the software as easy as possible to install and use as a standalone application, and to suppport the major desktop operating systems, i.e. Unix/Linux, macOS and Windows. Since it's intended to be used as a desktop application rather than as the primary interface for the computer, there are no plans to provide system administration utilities or control of emulator settings from within ES-DE. Although there are multiple forks of EmulationStation in existence, the goal of this edition is to make the software as easy as possible to install and use as a standalone application, and to suppport the major desktop operating systems, i.e. Unix/Linux, macOS and Windows. Since it's intended to be used as a desktop application rather than as the primary interface for the computer, there are no plans to provide system administration utilities or control of emulator settings from within ES-DE.
The current version 1.0 has been tested on the following operating systems (all for the x86 architecture): The current version 1.0 has been tested on the following operating systems (all for the x86 architecture):
@ -26,39 +24,36 @@ The current version 1.0 has been tested on the following operating systems (all
At the moment Raspberry Pi is not supported, but this is planned for future releases. It may still be possible to compile and run ES-DE on this device, but as of v1.0 it's not actively used during development and therefore not tested. At the moment Raspberry Pi is not supported, but this is planned for future releases. It may still be possible to compile and run ES-DE on this device, but as of v1.0 it's not actively used during development and therefore not tested.
FreeBSD, NetBSD and OpenBSD are only partially supported. Although the application should work correctly on these operating systems, there is no plan to distribute installation packages as it wouldn't make much sense. The goal is rather to have ES-DE added to the ports/package collections of these systems.
The software comes preconfigured for use primarily with [RetroArch](https://www.retroarch.com), although this can be changed as all emulator settings are fully configurable, even on a per-game basis. The software comes preconfigured for use primarily with [RetroArch](https://www.retroarch.com), although this can be changed as all emulator settings are fully configurable, even on a per-game basis.
A comprehensive theme set, **rbsimple-DE** (which is based on Recalbox Multi from the [Recalbox](https://www.recalbox.com) community) is bundled with the application. A comprehensive theme set, **rbsimple-DE** (which is based on Recalbox Multi from the [Recalbox](https://www.recalbox.com) community) is bundled with the application.
Check out the [User Guide](USERGUIDE.md) for how to quickly get the application up and running. (It will also show how to use some of its more advanced features.)
### Contributing: ### Contributing:
If you would like to contribute to the development of ES-DE, then that's great! Please read how to participate [here](CONTRIBUTING.md). (You can also read about planned future features there). If you would like to contribute to the development of ES-DE, then that's great! Please read how to participate [here](CONTRIBUTING.md). (You can also read about planned future features there).
# Other information # Additional information
[USERGUIDE.md](USERGUIDE.md) is a comprehensive guide on how to use ES-DE and it also contains a complete reference of all application settings
[RELEASES.md](RELEASES.md) contains information about the current release as well as previous releases. This covers the features, improvements and bug fixes. [RELEASES.md](RELEASES.md) contains information about the current release as well as previous releases. This covers the features, improvements and bug fixes.
[INSTALL.md](INSTALL.md) provides details on how to build the application from source code, and also discusses some more advanced configuration topics. [INSTALL.md](INSTALL.md) provides details on how to build the application from source code, and also discusses some more advanced configuration topics.
[CREDITS.md](CREDITS.md) is an attempt to credit the individuals and projects which made this application possible. [CREDITS.md](CREDITS.md) is an attempt to credit the individuals and projects which made ES-DE possible.
[THEMES.md](THEMES.md) is a guide on how theming works which is useful for those who would like to develop a new theme, or perhaps customize an existing theme. [THEMES.md](THEMES.md) is a guide on how theming works which is useful for those who would like to develop a new theme, or perhaps customize an existing theme.
# Some feature highlights # Some feature highlights
Here are some highlights of what EmulationStation Desktop Edition provides, displayed using the default theme set rbsimple-DE. There are of course many more features available, please refer to the [User Guide](USERGUIDE.md) for a comprehensive overview of all options and functionality. Here are some highlights of what EmulationStation Desktop Edition provides, displayed using the default theme set rbsimple-DE. There are of course many more features available, as covered in the [User Guide](USERGUIDE.md).
![alt text](images/current/es-de_system_view.png "ES-DE System View") ![alt text](images/current/es-de_system_view.png "ES-DE System View")
_The 'System view', which is the default starting point for the application, it's here that you browse through your game systems._ _The **System view**, which is the default starting point for the application, it's here that you browse through your game systems._
![alt text](images/current/es-de_gamelist_view.png "ES-DE Gamelist View") ![alt text](images/current/es-de_gamelist_view.png "ES-DE Gamelist View")
_The 'Gamelist view', it's here that you browse the games for a specific system. Note the support for mixing files and folders, and as well that favorite games are marked with stars. There is a game counter to the upper right, displaying the total number of games and the number of favorite games for this system._ _The **Gamelist view**, it's here that you browse the games for a specific system. Note the support for mixing files and folders, and as well that favorite games are marked with stars. There is a game counter to the upper right, displaying the total number of games and the number of favorite games for this system._
![alt text](images/current/es-de_folder_support.png "ES-DE Folder Support") ![alt text](images/current/es-de_folder_support.png "ES-DE Folder Support")
_Another example of the gamelist view, displaying advanced folder support. You can scrape folders for game info and game media, sort folders as you would files, mark them as favorites etc. In this example ES-DE has been configured to sort favorite games above non-favorites._ _Another example of the gamelist view, displaying advanced folder support. You can scrape folders for game info and game media, sort folders as you would files, mark them as favorites etc. In this example ES-DE has been configured to sort favorite games above non-favorites._
@ -70,16 +65,16 @@ _Games can be grouped into your own custom collections, in this example they're
_This is a view of the built-in scraper which downloads game info and game media from either [screenscraper.fr](https://screenscraper.fr) or [thegamesdb.net](https://thegamesdb.net). It's possible to scrape a single game, or to run the multi-scraper which can scrape a complete game system or even your entire collection._ _This is a view of the built-in scraper which downloads game info and game media from either [screenscraper.fr](https://screenscraper.fr) or [thegamesdb.net](https://thegamesdb.net). It's possible to scrape a single game, or to run the multi-scraper which can scrape a complete game system or even your entire collection._
![alt text](images/current/es-de_scraper_settings.png "ES-DE Scraper Settings") ![alt text](images/current/es-de_scraper_settings.png "ES-DE Scraper Settings")
_There are many settings for the scraper including options to define which type of info and media to download. The above screenshot shows only a portion of all these settings._ _There are many settings for the scraper including options to define which type of info and media to download. The above screenshot shows only a portion of these settings._
![alt text](images/current/es-de_metadata_editor.png "ES-DE Metadata Editor") ![alt text](images/current/es-de_metadata_editor.png "ES-DE Metadata Editor")
_In addition to the scraper there is a fully-featured metadata editor that can be used to modify information on a per-game basis. Here you can also toggle some additional flags which the scraper does not set, such as if the game is a favorite, or if you have completed it. Some of these flags can then be filtered in the gamelist view, letting you for instance only list games that you have not played through._ _In addition to the scraper there is a fully-featured metadata editor that can be used to modify information on a per-game basis. Here you can also toggle some additional flags which the scraper does not set, such as if the game is a favorite or if you have completed it. Some of these flags can then be filtered in the gamelist view, letting you for instance only display games that you have not played through._
![alt text](images/current/es-de_screensaver.png "ES-DE Screensaver") ![alt text](images/current/es-de_screensaver.png "ES-DE Screensaver")
_There are four types of built-in screensavers available, including a slideshow and the video screensaver showed in action above. These screensavers start after a configurable number of minutes of inactivity, and randomly display game media that you have previously scraped. If the corresponding option has been enabled, you can jump to the game from the screensaver, or even start it directly. There is shader support in ES-DE to render scanlines and screen blur on top of the videos (for the slideshow, scanline rendering is provided)._ _There are four types of built-in screensavers available, including a slideshow and the video screensaver showed in action above. These screensavers start after a configurable number of minutes of inactivity, and randomly display game media that you have previously scraped. If the corresponding option has been enabled, you can jump to the game from the screensaver, or even start it directly. There is shader support in ES-DE to render scanlines and screen blur on top of the videos (for the Slideshow screensaver, scanline rendering is provided)._
![alt text](images/current/es-de_ui_theme_support.png "ES-DE Theme Support") ![alt text](images/current/es-de_ui_theme_support.png "ES-DE Theme Support")
_ES-DE is fully themeable, so if you prefer another look than what the default theme rbsimple-DE gives you, it's possible to apply another theme set. In the example above a modified version of the [Fundamental](https://github.com/G-rila/es-theme-fundamental) theme is used. Be aware though that although ES-DE is backwards compatible with older EmulationStation themes, some newer features which are specific to ES-DE will not work, at least not until the theme authors update their themes._ _ES-DE is fully themeable, so if you prefer another look than what the default theme rbsimple-DE gives you, it's possible to apply another theme set. In the example above a modified version of the [Fundamental](https://github.com/G-rila/es-theme-fundamental) theme is used. Be aware though that although ES-DE is backwards compatible with older EmulationStation themes, some newer features which are specific to ES-DE will not work, at least not until the theme authors update their themes._
![alt text](images/current/es-de_ui_easy_setup.png "ES-DE Easy Setup") ![alt text](images/current/es-de_ui_easy_setup.png "ES-DE Easy Setup")
_A lot of effort has been spent on trying to make ES-DE easy to setup and use. The above screenshot shows the dialog if starting the application without any game files present in the default ROM directory. Also, ES-DE ships with a very comprehensive game systems configuration file that is automatically installed upon first startup. Note though that the emulator setup is outside the scope of what ES-DE does, and as RetroArch is mostly used, please refer to their [web site](https://www.retroarch.com) for more information about that part of the configuration._ _A lot of effort has been spent on trying to make ES-DE easy to setup and use. The above screenshot shows the dialog if starting the application without any game files present in the default ROM directory. Also, ES-DE ships with a very comprehensive game systems configuration file that is automatically installed upon first startup._

View file

@ -20,100 +20,101 @@ Many bugs have been fixed, and numerous features that were only partially implem
* Initial version, fork from RetroPie EmulationStation 2.10.0rp-dev (master) * Initial version, fork from RetroPie EmulationStation 2.10.0rp-dev (master)
* Added support for Windows, macOS, FreeBSD, NetBSD and OpenBSD * Added support for Windows, macOS, FreeBSD, NetBSD and OpenBSD
* Reorganization and general overhaul of the menu system, hopefully making it more intuitive and easy to understand * New default theme rbsimple-DE bundled with the software (this theme is largely based on recalbox-multi by the Recalbox community)
* Many quality of life improvements and removal of GUI inconsistencies * Added extensive es_systems.cfg templates for Unix, macOS and Windows that are automatically installed on first application startup
* Game systems are now sorted by full names which makes much more sense from a user perspective * Full navigation sound support, configurable per theme with a fallback to the built-in sounds if there is no theme support
* New game media file logic using a media directory with files matching the ROM names instead of pointing to the media files in gamelist.xml * Improved input device configuration and default keyboard mappings are now applied if the keyboard has not been configured by the user
* Updated scraper to support additional media files, detailed configuration of what to scrape, semi-automatic mode etc. * Reorganization and general overhaul of the menu system, hopefully making it more intuitive to navigate and easier to understand the menu entries
* Added user account support when scraping using ScreenScraper * New game media file logic using a media directory with files matching the ROM names instead of explicitly pointing to the media files from the gamelist.xml files
* In the metadata editor, any values updated by the single-game scraper or by the user are now highlighted using a different font color * GUI-configurable option to sort favorite games above non-favorite games
* Files or folders can now be flagged for exclusion when scraping with the multi-scraper, and for folders it can be set to apply recursively * GUI-configurable option to flag favorite games with star symbols
* Gamelist sorting is now working as expected and is persistent throughout the application session * GUI-configurable option to sort folders on top of the gamelists
* Overhaul of the game collection functionality including many bug fixes and optimizations * Added volume sliders for navigation sounds and game videos to the sound settings menu
* Overhaul of the screensaver (the game info overlay now works correctly for instance)
* Removed the PowerSaver
* Added ability to delete custom collections from the GUI menu
* Game counting is now done during sorting instead of every time a system is selected. This should make the UI more responsive in case of large game libraries
* Added a system view counter for favorite games in addition to the total number of games
* Added support for jumping to the start and end of gamelists and menus using the controller trigger buttons (or equivalent keyboard mappings)
* Full navigation sound support, configurable per theme with a fallback to the built-in sounds if the theme does not support it
* New default theme rbsimple-DE bundled with the software, this theme is largely based on recalbox-multi by the Recalbox community
* Added extensive es_systems.cfg templates for Unix and Windows
* Updated the application to compile and work on Microsoft Windows, including full UTF-16 (Unicode) support
* Updated the application to compile and work on Apple macOS
* Added support for OpenGL GLSL shaders (OpenGL 2.1 renderer only, no support for OpenGL ES 1.0 renderer) * Added support for OpenGL GLSL shaders (OpenGL 2.1 renderer only, no support for OpenGL ES 1.0 renderer)
* Added multiple animations and shader effects, such as when opening menus, playing videos in the gamelists and via the screensaver etc. * Added multiple animations and shader effects, such as when opening menus, playing videos in the gamelists and via the screensaver etc.
* Seamless (almost) launch of games without showing the desktop when starting and when returning from RetroArch and other emulators * Seamless (almost) launch of games without showing the desktop when starting and returning from RetroArch and other emulators
* Per-game launch command override, so that different cores or emulators can be used on a per-game basis (saved to gamelist.xml) * Updated scraper to support additional media files, detailed configuration of what to scrape, semi-automatic mode etc.
* The emulator core location can be defined relative to the emulator binary using the %EMUPATH% variable in es_systems.cfg (mostly useful on Windows) * Added user account support when scraping using ScreenScraper
* Core locations can be searched in a configurable list of directories and used in the es_systems.cfg file through the %COREPATH% variable (mostly useful on Unix where there are no standardized core directories) * Files or folders can now be flagged for exclusion when scraping with the multi-scraper, and for folders it can be set to apply recursively
* Overhaul of the game collection functionality including many bug fixes and optimizations
* Added ability to delete custom collections from the GUI menu
* Help system updated and expanded to the complete application (previously it was only partially implemented)
* Game systems are now sorted by full names which makes much more sense from a user perspective
* In the metadata editor, any values updated by the single-game scraper or by the user are now highlighted using a different font color
* Expanded the metadata for folders and made it possible to mark them as favorites
* Added metadata entry to mark games as broken/not working (e.g. useful for MAME games)
* Added metadata entry to indicate whether the file should be counted as a game (e.g. useful to exclude setup files and similar for DOS games)
* Added metadata entry to hide the metadata values from the gamelist views (useful for general folders, DOS game configuration utilities etc.)
* Added a button to the metadata editor to delete the media files for a game or folder while still retaining the game file and gamelist.xml entry
* Added a system view counter for favorite games in addition to the total number of games
* Added a gamelist info text field displaying the game count, any applied filters as well as an icon if a folder has been entered (requires theme support)
* Properly implemented the option to show or hide hidden files and folders * Properly implemented the option to show or hide hidden files and folders
* Properly implemented the option to show or hide games flagged as hidden in the metadata editor * Properly implemented the option to show or hide games flagged as hidden in the metadata editor
* Custom event scripts can now be enabled or disabled with a menu option
* Help system updated and expanded to the complete application (previously it was only partially implemented)
* Improved input device configuration, and default keyboard mappings are now applied if the keyboard has not been configured by the user
* GUI-configurable option to sort favorite games above non-favorite games (favorites marked with stars)
* GUI-configurable option to sort folders on top of the gamelists
* Added the ability to display pillarboxing and letterboxing for videos with non-standard aspect ratios * Added the ability to display pillarboxing and letterboxing for videos with non-standard aspect ratios
* Added a gamelist info text field displaying the game count, any applied filters as well as an icon if a folder has been entered * Custom event scripts can now be enabled or disabled with a menu option
* Expanded the gamelist filter functionality to include completed and broken games as well as the ability to filter on game names (via free text entry) * Gamelist sorting is now working as expected and is persistent throughout the application session
* Expanded the metadata for folders and made it possible to mark them as favorites * Expanded the gamelist filter functionality to include completed and broken games as well as the ability to filter on game names (via a free text entry)
* Added functionality to remember cursor positions inside folders and grouped custom collections * Added functionality to remember cursor positions inside folders and grouped custom collections
* Added new component GuiComplexTextEditPopup to handle changes to configuration file entries and similar * Per-game launch command override, so that different cores or emulators can be used on a per-game basis (saved to gamelist.xml)
* Speed improvements and optimizations, the application now starts faster and feels more responsive * The emulator core location can be defined relative to the emulator binary using the %EMUPATH% variable in es_systems.cfg (mostly useful on Windows)
* Core locations can be searched from a configurable list of directories if defined in the es_systems.cfg file using the %COREPATH% variable (mostly useful on Unix where there are no standardized core directories)
* Overhaul of the screensaver (the game info overlay now works correctly for instance)
* Added support for jumping to the start and end of gamelists and menus using the controller trigger buttons (or equivalent keyboard mappings)
* Many additional quality of life improvements and removal of GUI inconsistencies
* Replaced the on and off button icons with new graphics * Replaced the on and off button icons with new graphics
* Added metadata entry to mark games as broken/not working
* Added metadata entry to indicate whether the file should be counted as a game (for example useful to exclude setup files and similar for DOS games)
* Added metadata entry to hide the metadata values from the gamelist views (useful for general folders, DOS game configuration utilities etc.)
* Added a button to the metadata editor to delete the media files for a game or folder while retaining the game file and gamelist.xml entry
* Moved all resources to a subdirectory structure and enabled the CMake install prefix variable to generate the resources search path * Moved all resources to a subdirectory structure and enabled the CMake install prefix variable to generate the resources search path
* Changed theme directory to the install prefix (e.g. /usr/local/share/emulationstation/themes) with themes in the home directory taking precedence * Changed theme directory to the install prefix (e.g. /usr/local/share/emulationstation/themes) with themes in the home directory taking precedence
* No more attempts to open files directly under /etc, instead only the install prefix directory and the home directory are used * No more attempts to open files directly under /etc, instead only the install prefix directory and the home directory are used
* Added proper error handling for missing resource files and improved overall logging * Added proper error handling for missing resource files and improved overall logging
* Refactoring, cleanup and documentation of the source code, removal of deprecated files etc. * Refactoring, cleanup and documentation of the source code, removal of deprecated files etc.
* Speed improvements and optimizations, the application now starts faster and feels more responsive
* Added new component GuiComplexTextEditPopup to handle changes to configuration file entries and similar
* Added full UTF-16 (Unicode) support on Windows
* Removed the PowerSaver
* Game counting is now done during sorting instead of every time a system is selected. This should make the UI more responsive in case of large game libraries
* All required fonts bundled with the application, no dependencies on the OS to provide them any longer * All required fonts bundled with the application, no dependencies on the OS to provide them any longer
* Made pugixml an external dependency instead of bundling it * Made pugixml an external dependency instead of bundling it
* Modernized the audio code, for example using SDL_AudioStream instead of the older SDL_AudioCVT * Modernized the audio code, for example using SDL_AudioStream instead of the older SDL_AudioCVT
* Overhaul of application settings, now the configuration file is only updated when there have been actual configuration changes * Overhaul of application settings, now the configuration file is only updated when there have been actual configuration changes
* Decreased CPU usage dramatically by only rendering the currently visible view (previously all views were always rendered) * Decreased CPU usage dramatically by only rendering the currently visible view (previously all views were always rendered)
* Updated the CMake/CPack install and package build script to work as expected (it can now generate .deb, .rpm, .dmg and NSIS installation packages) * Updated the CMake/CPack install and package configuration files to work as expected (can now generate DEB, RPM, DMG and NSIS installation packages with correct dependencies)
* Added support for Clang/LLVM, made the application build with no errors or warnings using this compiler (Unix and macOS only) * Added support for Clang/LLVM, made the application build with no errors or warnings using this compiler (Unix and macOS only)
* License files included for all the libraries and resources that are bundled with the application * License files included for all the libraries and resources that are bundled with the application
* Greatly expanded the application documentation (which is hosted with the source repository on GitLab)
* Updated the MAME ROM index files to include ROMs up to MAME version 0.221 and created scripts to easily generate these index files in the future * Updated the MAME ROM index files to include ROMs up to MAME version 0.221 and created scripts to easily generate these index files in the future
* Greatly expanded the application documentation (which is hosted in the ES-DE repository on GitLab)
### Bug fixes ### Bug fixes
* Metadata editor insisted that changes were made although nothing was updated * On Unix, adding a hidden folder with a game in it crashed the application on startup
Note: The editor will still ask for save confirmations after automatically rounding fractional game ratings to half-star values, but any time such a rounding has taken place, the rating stars will be colored green in the metadata editor to nofity the user * If the user tried to enter a blank game name in the metadata editor, the application would crash upon saving
* Game images were sometimes scaled incorrectly * Switching to the Grid view style with a placeholder shown in the gamelist crashed the application
* Non-transparent favorite icons were not rendered correctly * FileSystemUtil::getDirContent() crashed when searching through directories recursively
* Restart and power-off menu entries not working
* Unknown command line options were silently accepted instead of generating an error and notifying the user
* The scraper didn't handle error conditions correctly
* Fixed a massive memory leak related to SVG images * Fixed a massive memory leak related to SVG images
* Fixed an issue where SVG images would sometimes be cut off slightly on the right side (e.g. logos on the system view carousel) * Fixed an issue where SVG images would sometimes be cut off slightly on the right side (e.g. logos on the system view carousel)
* The scraper didn't handle error conditions correctly
* The metadata editor insisted that changes were made although nothing was updated. Note: The editor will still ask for save confirmations after automatically rounding fractional game ratings to half-star values, but any time such a rounding has taken place, the rating stars will be colored green in the metadata editor to nofity the user
* Restart and power-off menu entries not working on any of the tested operating systems
* Toggling the screensaver didn't work as expected * Toggling the screensaver didn't work as expected
* Wrapping around the first and last game systems generated strange camera movements when using the slide transition style
* Game media was not rendered when moving between gamelists using the slide transition style
* The setting to enable or disable audio for the video screensaver only worked on Raspberry Pi * The setting to enable or disable audio for the video screensaver only worked on Raspberry Pi
* The screensaver random function did not consider the previously selected game and could potentially show the same image or video over and over again * The screensaver random function did not consider the previously selected game and could potentially show the same image or video over and over again
* The random system selection did not consider the currently selected system * The random system selection did not consider the currently selected system
* The random game selection did not consider the currently selected game * The random game selection did not consider the currently selected game
* The random game selection traversed folders, i.e. a game could be selected inside a subdirectory and vice versa * The random game selection traversed folders, i.e. a game could be selected inside a subdirectory and vice versa
* Deleting a game from the metadata editor did not delete the game media files or the entry in the gamelist.xml file * The controller D-PAD could not be used for entering the UI mode change passkey
* SystemView didn't properly loop the systems if only two systems were available * Filters were not applied when leaving folders using the back button
* Switching to the Grid view style with a placeholder shown in the gamelist crashed the application
* When changing to the video view style from inside a gamelist, the view was not completely initialized
* Hidden files still showed up if they had a gamelist.xml entry
* FileSystemUtil::getDirContent() crashed when searching through directories recursively
* Fixed an annoying gamelist issue that caused the game images and data to be updated and rendered up to six times every time the list was scrolled
* VRAM statistics overlay was somewhat broken and incorrectly displayed numbers in megabytes instead of mebibytes
* Not all input events were logged when running with debug logging activated
* Filters were not applied when leaving folders by using the back button
* Editing long text entries made the cursor jump outside the editing field * Editing long text entries made the cursor jump outside the editing field
* Fixed an annoying gamelist issue that caused the game images and data to be updated and rendered up to six times every time the list was scrolled
* Not all input events were logged when running with debug logging activated
* Unknown command line options were silently accepted instead of generating an error and notifying the user
* Deleting a game from the metadata editor did not delete the game media files or its entry in the gamelist.xml file
* Hidden files still showed up if they had a gamelist.xml entry
* The VRAM statistics overlay was somewhat broken and incorrectly displayed numbers in megabytes instead of mebibytes
* Long game names would sometimes not scroll in the gamelist view * Long game names would sometimes not scroll in the gamelist view
* On Unix, adding a hidden folder with a game in it crashed the application on startup * Game media was not rendered when moving between gamelists using the slide transition style
* If the user tried to enter a blank game name in the metadata editor, the application would crash upon saving * Wrapping around the first and last game systems generated strange camera movements when using the slide transition style
* SystemView didn't properly loop the systems if only two systems were available
* When changing to the video view style from inside a gamelist, the view was not completely initialized
* Game images were sometimes scaled incorrectly
* Non-transparent favorite icons were not rendered correctly
* The SliderComponent knob position was set incorrectly if the minimum value was not zero * The SliderComponent knob position was set incorrectly if the minimum value was not zero
* Lots and lots of additional small bugs and inconsistencies fixed * Lots and lots of additional small bugs and inconsistencies fixed

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 166 KiB

View file

@ -1,9 +1,8 @@
Missing systems # Missing systems
===============
Missing (or not updated) theme data # Missing (or not updated) theme data
===================================
* 3do: 3DO - system info, customized colors, consolegame.svg, console.svg, controller.svg, game.svg * 3do: 3DO - system info, customized colors, consolegame.svg, console.svg, controller.svg, game.svg
* ags: Adventure Game Studio - system info, customized colors, consolegame.svg, console.svg, controller.svg, game.svg * ags: Adventure Game Studio - system info, customized colors, consolegame.svg, console.svg, controller.svg, game.svg
* amiga: Amiga (general) - system info (improve it) * amiga: Amiga (general) - system info (improve it)