gitlab es-de/emulationstation-de v2.2.0

latest releases: v3.1.0, v3.0.3, v3.0.2...
11 months ago

Version 2.2.0

Release date: 2023-11-02

Release overview

The 2.2 release adds many new features like cleanup tools for orphaned data, file hash searching for the scraper, clipboard paste support, ability to change systems sorting from the GUI and more complete Unicode support. It's now possible to rescan the ROM directory and to update/create the ROM directory tree from the new Utilities menu, both without restarting the application.

New theme engine functionality has been implemented such as rounded corners for images, videos and animations, horizontally scrolling text containers and stationary elements. Rendering accuracy has been improved, especially font rendering which now has a higher quality across all types of devices and screen resolutions.

Support has been added for many new systems and emulators, and on Linux there is now support for running Windows emulators using Wine or Proton.

On the infrastructure level a significant portion of the homecooked filesystem code has been replaced with functionality from the C++ Standard Library and a large amount of refactoring has been made to clean up and simplify the codebase. As part of this cleanup legacy theme support has been completely removed.

In addition to the above many bugs have been fixed and the application has received a lot more polish as well as numerous quality of life improvements.

Detailed list of changes

  • Completely removed support for legacy EmulationStation themes
  • Added support for MD5 file hash searching when scraping using ScreenScraper
  • Added a utility for removing orphaned data (game media, gamelist entries and custom collection entries)
  • Added a "Systems sorting" option to the UI settings menu to select between the bundled systems sorting configuration files
  • Added support for downloading the Windows and macOS packages via the application updater (manual installation still required)
  • Added support for pasting text into the application (when a text input field is focused)
  • Added support for using most characters (including multi-byte Unicode characters) in custom collection names
  • Added key repeat support to the media viewer
  • Added a new Utilities menu to the main menu
  • Added an entry to the Utilities menu for rescanning the ROM directory
  • Added an entry to the Utilities menu for creating/updating the game system directories
  • Added a "Debug mode" option to the Other settings menu (which is equivalent to starting with the --debug flag)
  • Added support for a %PRECOMMAND% launch command variable (useful for launching emulators via Wine or Proton)
  • Added support for a %GAMEDIRRAW% launch command variable (useful for launching MESS systems using the MAME RetroArch cores)
  • Added support for defining multiple %INJECT% launch command variables
  • Added more debug log output when launching games
  • Duplicate es_systems.xml command label entries are now ignored on application startup
  • Added support for placing images in a "custom" folder in the downloaded_media directory and view these using the media viewer
  • Enabled the setting "Show hidden files and folders" to be changed without requiring an application restart
  • Enabled the setting "Show hidden games" to be changed without requiring an application restart
  • Enabled the setting "Only show ROMs from gamelist.xml files" to be changed without requiring an application restart
  • Renamed the setting "Only show ROMs from gamelist.xml files" to "Only show games from gamelist.xml files
  • Added event polling when suspending ES-DE on game launch to avoid various issues primarily on Windows
  • Adding and removing controllers when a game is launched is now always handled directly rather than on return to ES-DE
  • Added support for deleting installed themes from the theme downloader interface
  • Added support for the Coleco Adam (adam) game system
  • Added support for the Acorn Archimedes (archimedes) game system
  • Added support for the Console Arcade Systems (consolearcade) game system
  • Added support for the Acorn Electron (electron) game system
  • Added support for the Fujitsu FM-7 (fm7) game system
  • Added support for the Bit Corporation Gamate (gamate) game system
  • Added support for the LaserDisc Games (laserdisc) game system
  • Added support for the Sega NAOMI 2 (naomi2) game system
  • Added support for the Nokia N-Gage (ngage) game system
  • Added support for the PC Arcade Systems (pcarcade) game system
  • Added support for the Commodore Plus/4 (plus4) game system
  • Added support for the Sega Titan Video Game System (stv) game system
  • Added support for the Funtech Super A'Can (supracan) game system
  • Added support for the Symbian (symbian) game system (was previously a placeholder system)
  • Added support for the Namco-Sega-Nintendo Triforce (triforce) game system
  • Added support for the Taito Type X (type-x) game system
  • Added support for the Microsoft Windows 3.x (windows3x) game system
  • Added support for the Microsoft Windows 9x (windows9x) game system
  • Removed support for the Cave Story (NXEngine) (cavestory) game system
  • Removed support for the MAME4ALL (mame-mame4all) game system
  • Removed support for the Moonlight Game Streaming (moonlight) game system
  • Removed support for the Stratagus Game Engine (stratagus) game system
  • Added support for the AdvanceMAME (mame-advmame) system on Unix and Windows
  • Added Mesen standalone as an alternative emulator for the famicom, fds, gb, gbc and nes systems on Unix and Windows
  • Added Mesen standalone as an alternative emulator for the pcengine, pcenginecd, satellaview and sfc systems on Unix and Windows
  • Added Mesen standalone as an alternative emulator for the sgb, snes, snesna, tg16 and tg-cd systems on Unix and Windows
  • Added Flycast Dojo standalone as an alternative emulator for the arcade, atomiswave, dreamcast, mame, naomi and naomigd systems
  • (Linux) Changed the Flycast AppImage find rules so that they don't collide with the Flycast Dojo AppImage
  • Added the MAME - Current RetroArch core as the default emulator for the apple2gs, arcadia, crvision, fmtowns and gamecom systems
  • Added the MAME - Current RetroArch core as the default emulator for the gmaster, pv1000, scv and vsmile systems
  • Added MAME standalone as an alternative emulator for the atari7800, fmtowns and x1 systems
  • Added ares standalone as an alternative emulator for the gamegear, gb, gba, gbc and satellaview systems
  • Added SkyEmu standalone as an alternative emulator for the gb, gba, gbc and nds systems
  • Added FS-UAE standalone as an alternative emulator for the amiga, amiga1200, amiga600, amigacd32 and cdtv systems
  • Added Amiberry standalone as an alternative emulator for the amiga, amiga1200, amiga600, amigacd32 and cdtv systems on Linux and macOS
  • Set %STARTDIR%=%GAMEDIR% for the X Millennium RetroArch core as it created temporary files in the ES-DE directory
  • Added the ECWolf, NXEngine, OpenLara and Super Bros War RetroArch cores as alternative emulators for the ports system on Unix and Windows
  • Added the ECWolf, NXEngine and Super Bros War RetroArch cores as alternative emulators for the ports system on macOS
  • Added TIC-80 standalone as an alternative emulator for the tic80 system
  • Added the MAME - Current RetroArch core as an alternative emulator for the apple2 and atari7800 systems
  • Added the MAME - Current RetroArch core and MAME standalone as alternative emulators for the channelf, daphne and intellivision systems
  • Added the MAME - Current RetroArch core and MAME standalone as alternative emulators for the megaduck, odyssey2 and supervision
  • Added the MAME - Current RetroArch core and MAME standalone as alternative emulators for the vectrex and videopac systems
  • Added the DirkSimple RetroArch core as an alternative emulator for the daphne and laserdisc systems
  • Added MAME standalone as an alternative emulator for the fmtowns system on Unix and Windows
  • Removed the Supermodel [Fullscreen] standalone emulator entries from the arcade, mame and model3 systems on Unix and Windows
  • Removed the explicit -force-feedback flag from the Supermodel emulator entries for the arcade, mame and model3 systems
  • (macOS) Added the MAME - Current RetroArch core as the default emulator for the fmtowns system (was previously a placeholder system)
  • Added QUASI88 standalone as an alternative emulator for the pc88 system
  • Changed the configuration for the astrocde system to no longer require a manually installed MAME hash file
  • Added the Retro8 RetroArch core as an alternative emulator for the pico8 system
  • Added the .88d, .cmt and .t88 file extensions to the pc88 system
  • Removed the .7z and .zip file extensions from the pc88 system
  • Removed the .cdi, .cue, .gdi, .m3u and .iso file extensions from the atomiswave, naomi and naomigd systems
  • Added the .7z and .zip file extensions to the apple2gs and daphne systems
  • Added the .cdr, .chd and .gdi file extensions to the fmtowns system
  • Added the .arcadedef file extension to the ps2 system
  • Added the .chd file extension to the psp system
  • (Linux) Added support for the Microsoft Xbox 360 (xbox360) game system by running xenia via Wine or Proton
  • (Linux) Added support for the Atari Jaguar CD (atarijaguarcd) game system by running BigPEmu via Wine or Proton
  • (Linux) Added BigPEmu Wine and BigPEmu Proton as alternative emulators for the atarijaguar system
  • (Linux) Added Model 2 Emulator Wine and Model 2 Emulator Proton as alternative emulators for the model2 system
  • (Linux) Added 3dSen Wine and 3dSen Proton as alternative emulators for the famicom and nes systems
  • (Linux) Added support for the Visual Pinball (vpinball) game system
  • (Linux) Added support for using the RetroArch AppImage release in portable mode (added corepath find rules)
  • (Linux) Added support for the AppImage release of Snes9x
  • (Linux) Added support for the Flatpak release of Cemu and Supermodel
  • (Linux) Added support for the Snap release of Dolphin
  • (Linux) Added the PCSX2 Flatpak release to the non-legacy PCSX2 find rule configuration
  • (Linux) Updated the DuckStation find rules as the AppImage release filename has changed
  • (Linux) Updated the Citra find rules as the AppImage release filename has changed
  • (Windows) Removed %RUNINBACKGROUND% from all MAME standalone entries as it no longer hangs on exit
  • (Windows) Added %STARTDIR%=%EMUDIR% for the Vita3K and xemu emulators
  • (Windows) Added Demul as an alternative emulator for the atomiswave, dreamcast, naomi and naomi2 systems
  • (Windows) Added 3dSen standalone as an alternative emulator for the famicom and nes systems
  • (Windows) Added Altirra standalone as an alternative emulator for the atari5200, atari800 and atarixe systems
  • (Windows) Added the .url file extension to the epic system
  • (Windows) Added the .lnk file extension to the steam system
  • Removed atarijaguarcd as an extra platform for the atarijaguar system as it actually made scraping worse
  • Added arcade as an extra platform to the daphne system (to improve scraping)
  • Removed the videopac platform ID entry as it's identical to odyssey2
  • Changed the platform for the ags system to pcwindows to improve scraping
  • Changed the platform for the videopac system to odyssey2 to improve scraping
  • Added the snes-msu1 platform so that these games can be scraped using ScreenScraper (requires custom system config)
  • Changed the fullname for the vectrex system from "Smith Engineering Vectrex" to "GCE Vectrex"
  • Changed the fullname for the tic80 system from "TIC-80 Game Engine" to "TIC-80 Fantasy Computer"
  • (modern-es-de) Replaced the carousel images for the c64 and dos systems
  • Changed the screensaver to never show the same game again until all games have been cycled through
  • Reduced the slideshow screensaver fade-in time
  • Removed the annoying warning message when selecting the video screensaver from the UI settings menu
  • Removed the back button option from some confirmation dialogs
  • Changed the button text for some dialogs to display "Proceed/Cancel" instead of "Yes/No"
  • Increased the font size for the "Create new custom collection from theme" interface
  • Set scanline rendering as disabled by default for the slideshow screensaver
  • Changed the sort types "filename, ascending" and "filename, descending" to "name, ascending" and "name, descending"
  • Changed the "no games" dialog to no longer save the ROM directory to es_settings.xml if its value hasn't changed
  • When editing custom collections with really long names, the "Y" button helpsystem text now gets abbreviated
  • Removed the "Legacy gamelist view style" and "Legacy theme transitions" settings
  • Removed the "Display pillarboxes for gamelist videos" and "Render scanlines for gamelist videos" settings
  • Removed Linux DEB package support from ApplicationUpdater as these packages are no longer provided
  • Changed ComponentList to fixed row heights which fixed many alignment issues
  • Improved the layout for the scraper and theme downloader to look more consistent across different display aspect ratios
  • When an invalid media file is detected by the scraper, the media type is now included in the error message
  • Added a download percentage indicator to the application updater
  • Made the miximage offline generator GUI sizing more consistent across different display aspect ratios
  • Removed the es_log.txt entry when an es_systems.cfg legacy systems configuration file was found on startup
  • Improved font rendering quality and always enable linear texture interpolation for both minification and magnification
  • Improved the blur shaders to run faster at higher resolutions and to look nearly identical regardless of display resolution
  • Improved the blur shaders rendering quality when rotating the screen 90 or 270 degrees
  • Added rounded corner support to the image, video, animation, carousel and grid elements
  • Added a "stationary" property to all secondary elements to set them as stationary during slide transitions
  • Added a "containerType" property to the text element to select between vertical and horizontal containers
  • Added a number of carousel, grid, textlist and text properties to control horizontally scrolling text
  • Added a "textRelativeScale" property to the carousel to size text smaller than the overall item size
  • Added an "imageInterpolation" property to the grid element
  • Added "rotation" and "rotationOrigin" properties to the video element
  • Changed the "interpolation" property for the video element to also apply to the video texture
  • Added debug overlay rendering for the actual video stream in addition to the static image
  • Added an "interpolation" property to the badge element
  • Added support for the "interpolation" property to the animation element when using Lottie files
  • Changed default interpolation to linear on arbitrary rotation for the image, video, animation, badges and rating elements
  • Added "iterationCount" and "onIterationsDone" properties to the video element
  • Changed the "path" property for the video element to consider the set value even if it points to a non-existing file
  • Made it possible to set the defaultImage property for the carousel and grid elements using variables
  • Added theme support for the "manual", "physicalName" and "physicalNameExtension" metadata types for the text element
  • Added support for binding multiple texture units for use in the shaders
  • Added the device serial number to the es_log.txt entries when adding or removing controllers
  • Improved resilience to buggy controller drivers which could previously crash the application (mostly relevant on macOS)
  • Changed the application updater to not use the scraper's transfer and connection timeout settings
  • Added support to MathUtil::md5Hash() for streaming files in chunks
  • Replaced a number of homecooked functions in FileSystemUtil with those from the C++ Standard Library
  • Added support for defining an explicit back button function for GuiMsgBox
  • Added support for fragment shader clipping to Font and TextComponent instead of using glScissor
  • Added horizontal text scrolling functionality to TextComponent
  • Removed all horizontal text scrolling code from ComponentList and TextListComponent
  • Refactored TextListComponent to work more like the other primary components
  • Added conversion of some additional HTML character codes when scraping using ScreenScraper
  • Added a lot more debug log output to the scraper
  • Changed a number of stream operations to open files for writing in binary mode (to always create proper Unix line breaks)
  • Changed the concept of "theme set" to simply "theme" everywhere in the code and documentation
  • Added a ~5 MB log output size limitation for launched games on Unix and macOS
  • (Linux) The regular AppImage release is no longer built to use the bundled TLS/SSL certificates
  • (Windows) Removed a launch command hack that deleted double quotation marks
  • (Windows) Added a warning dialog on startup if an unsafe upgrade of the portable release has been made
  • (Windows) Improved the README.txt file for the portable release
  • (Windows) Defined UNICODE and _UNICODE in the CMake configuration to force Unicode support for the Win32 API
  • (Windows) Added proper Unicode support to the Windows Registry find rules "winregistrypath" and "winregistryvalue"
  • (Windows) Set the subsystem to WINDOWS when building with MSVC to avoid displaying a console window on application startup
  • (Windows) Bundled the C++ dependency libraries when building with MSVC
  • (Windows) Now only redirect the standard input/output streams to the console if there is actually a console available
  • (macOS) Changed the minimum required OS version from 10.14 "Mojave" to 10.15 "Catalina"
  • (macOS) Completely removed support for the legacy OS build
  • Updated the MAME index files to include ROMs up to MAME version 0.258
  • Bundled the August 2023 release of the Mozilla TLS/SSL certificates
  • Updated SDL to 2.28.4 on Windows, macOS and the Linux AppImage builds
  • Updated RapidJSON to commit a95e013b97ca6523f32da23f5095fcc9dd6067e5
  • Updated rlottie to commit f969abf62c8df773e3951a1176000e70fcde637f
  • Updated LunaSVG to 2.3.6
  • Updated CImg to 3.2.6
  • (Windows) Updated curl to 8.2.1

Bug fixes

  • Repeatedly enabling and disabling auto collections could crash the application if the theme used the gameselector element
  • Parsing of theme include files would stop if non-existing include files were defined using variables
  • The video player would not play the last couple of frames for any videos
  • Starting the media viewer did not pause fallback game videos (defined using the "default" video property)
  • Quotation marks in the launch command were not always handled correctly when combined with the %CORE% variable
  • The %STARTDIR% variable could not be combined with running ES-DE in the background when launching games on Linux and macOS
  • Directories interpreted as files entries could not be removed from custom collections
  • Duplicate ScreenScraper game entries could show up in the interactive scraper if multiple platforms were defined for the system
  • ScreenScraper API calls were slightly malformed for systems where multiple platforms were defined
  • If multiple games had the same thumbnail in the interactive scraper, then this image would not get displayed for all entries
  • Scrollable text containers were sometimes not updated correctly which led to text being cut off vertically
  • Slider knobs were sometimes not correctly positioned horizontally
  • The background was too dark when opening a menu with the dark menu color scheme selected and the option to blur the background disabled
  • The lowercase .xdf file extension was not defined correctly for the pc98 system
  • (Windows) Lack of event polling when suspended led to various strange problems like OS audio mixer issues and emulators refusing to exit
  • (Windows) If the ROMDirectory setting had a value then all custom collection files contained absolute paths instead of relative paths
  • (Windows) The media viewer could crash if attempting to display corrupt or invalid PDF game manuals
  • (Windows) Wide string conversions were not done correctly which caused issues when filenames contained 4-byte Unicode characters
  • (Windows) Attempting to capitalize multi-byte Unicode strings crashed the application if built using the MSVC compiler
  • (Linux) Flatpak systempath rules were missing for bsnes, Gargoyle, Hatari, Nestopia UE, openMSX, PCSX2, Play! and Snes9x
  • The camera offset in ComponentList was not correctly calculated when reaching the bottom of a list
  • The textlist properties selectedBackgroundColor and selectedSecondaryBackgroundColor were not offset by selectorVerticalOffset
  • SDL_StartTextInput() was sometimes set when not actually inputting any text
  • There were some minor memory leaks related to gamelist.xml entries when the file extension was no longer configured in es_systems.xml
  • Some theme loading warning messages for the gamelistinfo element were not formatted correctly

Don't miss a new emulationstation-de release

NewReleases is sending notifications on new releases.