EmulationStation 2.0.1a

It's finally time for the release of EmulationStation 2.0.1a, which has a few minor fixes and a couple new features. (I hope I didn't break anything.)

  • UTF-8 Unicode support! ES can now display glyphs from non-English languages (like Japanese), and most common non-ASCII characters work.
    • Here’s an example of Japanese text rendered in ES:
    • If a font is missing a glyph that something needs, ES will try to fall back to a system font. The system font list is not exhaustive and is operating system dependent, so if your language isn't working, please open a GitHub issue with a suggested font that everyone on your operating system should already have.
    • IME input is still kind of broken. If enough people want this I'll try and add it, but I don't expect many people to be entering much text in ES in the first place.
  • Re-added the "Jump to Letter" functionality (press select in the game list)
  • Add Vsync, enabled by default (no more maxing out your fan!)
  • Added some older MAME ROM names (based on MAME 0.37b5), thanks to joolswills
  • Added the 'msx' platform (for platform tags)
  • %ROM% and %ROM_RAW% now give a path with backslashes on Windows (some programs, like VLC, complained about forward slashes even though Windows officially supports them)
  • %ROM% works properly on Windows now – it is equivalent to "%ROM_RAW%"
  • Fixed some memory leaks when scraping, huge thanks to deadbeef84
  • Non-ASCII paths should work on Windows now, though some emulators don't support them (ES now uses _wsystem() instead of system() on Windows)
  • Hide the console window on Windows unless the "–debug" argument is present (Windows). Launching a game currently still opens a command prompt window, though.
  • Don't reset system volume on program exit (only affects Linux)
  • Fixed "ENABLE SOUNDS" setting being backwards (oops)
  • Fixed using more than one tag a launch command not replacing past the first tag
  • Fixed shutdown and restart commands not working on Windows
  • Fixed entering release date in metadata editor from "unknown" causing the new date to be cut off
  • Fixed page up/page down not being caught by date editor
  • 2.0.1a: fixed scraping crashing due to last-minute changes in 2.0.1

Nils has also updated the default themes, now on v1.4:

  • Reduced background images to 720p. Since they're blurred already, this is completely unnoticable, and saves a ton of VRAM (almost 50%!)
  • Optimized some blurred system backgrounds where banding occured.
  • Added systems:
    • Microsoft XBox
    • SEGA Saturn
    • SEGA Dreamcast
    • Nintendo DS
    • Nintendo Wii
    • Sony PlayStation 2
    • Sony PlayStation Portable
    • MSX
    • SNK Neo Geo CD
    • Magnavox Odyssey 2
    • GCE Vectrex
    • Nintendo Virtual Boy
    • Bandai WonderSwan
    • Bandai WonderSwan Color
    • Atari Lynx
    • Nintendo Family Computer (Famicom)
    • Nintendo Super Famicom
    • SEGA Genesis
  • Updated systems:
    • SEGA Mega Drive (used to display Genesis logo/text, which has been moved into the “genesis” system)

New Themes in Simple  v1.4

All of these changes are in the new 2.0.1a release, available now on the EmulationStation website!

If you have an existing installation, you should be able to install 2.0.1a over top of it (but note that if you choose to reinstall the default themes, it will overwrite any modifications you have made). It is strongly advised that you back up your $HOME/.emulationstation folder before updating.

New Forum

There is also a new official EmulationStation forum! If you are looking for help, you might be able to get it here. I'm also trying to move feature requests off GitHub and onto the forum, as the GitHub issue tracker is pretty packed right now.

The Future

There is another change I've been working on that isn't quite ready for release yet (and been promising for quite a while): a rewrite of the metadata storage code to use an SQLite database instead of XML. This speeds up saving considerably for large game lists, which gets rid of some of the long hangs seen during scraping and makes ES close instantly. The way files are stored internally has also been reworked to match this database, which makes it possible to do useful queries and sorting via SQL. It's also easy to import/export the current XML format to/from the database. This change was just merged into unstable. I would appreciate testing, since it changed a lot of stuff.

A community member by the name of sselph built a nice checksum-based scraper, which means it matches games based on the content of your ROM file rather than the name of that file. This almost guarantees no false positives, making scraping waaay faster and waaay more accurate. It's been merged into the unstable branch as well. The ES scraping system could use some work to support multiple scraper fall-through (when one scraper has no results, go to the next one) and scrapers with certain plaform affinities.

Development has been pretty slow. I've been busy with school and work (I finally have a programming job!), and the time I do have hasn't been spent working on ES. I am sure this is frustrating for many of you who would like to see new features. This might get better come summer, where I'll only have work and no classes. Here's some stuff that I'd like to work on in the future:

  • Add the ability to configure emulators from within ES (including setting controls). This requires some pretty serious design work and is something I'd like to at least lay the groundwork for myself.
  • Add another type of game list view that shows games by image (sort of like an album view).
  • Make it easier to set up ES, especially on Windows. As it stands, ES needs some work to handle the systems list changing while ES is running. The gamelistdb branch is starting to take steps towards this. Ideally, this could be integrated with the "configure emulators" stuff to provide some simple autodetect system (give ES a bunch of emulator directories, have it automatically detect which emulators are present). An external tool might be an easier way to do this.
  • Try porting ES to Android. SDL2 supports Android, and ES uses OpenGL ES 1.x to render everything. I think most of the libraries ES uses will work on Android. Touch control would not be supported. This will probably entail a couple days of fighting with build systems. If anyone else wants to give this a shot, go for it.
  • Add a "UI Language" option to ES. DigitalLumberjack has already done some work on this.

And finally, thanks for the huge amount of support you guys have shown.

EmulationStation 2.0.0-RC1

After 10 months of relative silence, we’re finally ready to release. We are proud to present EmulationStation 2.0, release candidate 1!

For those who don’t know, EmulationStation is the front-end for the popular Raspberry Pi retro gaming distribution. It also runs on Windows and most flavors of Linux.

I say “we” because this project is no longer only myself. Nils Bonenberger joined the project in December of 2013, and has been assisting with the UI design, graphics, and testing. The results speak for themselves:

(click for full size)

Some of the new features:

  • A built-in, graphical scraper system. No more using an external Python script.  Automatically download full names, box art, descriptions, release dates, and optionally ratings.  You can scrape several systems at once, or just individual games.
  • A built-in, graphical metadata editor. No more editing XML files by hand.  Press the “Select” button in the game list and choose “EDIT THIS GAME’S METADATA” to open it.  You can scrape metadata from the editor, too.
  • The old theming system has been completely replaced. The new system is more flexible, but still simple, and much more consistent.
    • There’s an <include> tag now! No more defining fonts/sounds by hand across 30 systems!
    • Textlists support left, center, and right alignments, as well as horizontal margins. You can also control line spacing.
    • Images can now be in SVG format (vector graphics), so they look good at any resolution.
    • You can now add static text wherever you want.
    • Themes are now distributed as sets. You can change the current set within EmulationStation itself, without even restarting the program.
    • Read THEMES.md for examples and more information!
  • A new “System Select” screen, featuring the logos for all your systems in a carousel. Themable, of course.
  • A new set of themes done by Nils, for every platform RetroPie supports and more! Each system has a beautiful vector logo!
  • The old menu (when you press “start”) has been completely redone, in both functionality and style. Along with pretty much every piece of UI.
  • The input configuration system has been revamped. In addition to looking much nicer, it is now easy to add new controllers after the initial configuration: just select “CONFIGURE INPUT” from the main menu.
  • An on-screen help system, that shows what buttons do what things.
  • A built-in settings menu that lets you change:
  • The screensaver timeout
  • The screensaver behavior (dim vs. completely black screen)
  • Toggle framerate display
  • Toggle on-screen help display
  • Toggle left/right changing the system in the game list view (forcing you to use the new system select carousel); useful for those with analog sticks.
  • The screen transition style (“fade” or “slide”)
  • The current theme set
  • The global system volume (on the Operating System level)
  • When scrolling in really long game lists, after a few seconds, the screen will dim and display the first 2 letters of where the cursor is, Steam Big Picture style.
  • Gamelist.xmls now support relative paths, so it should be possible to transfer them between computers and make portable installations.
  • EmulationStation no longer closes immediately if you launch it without es_systems.cfg set up properly. It now shows an in-program message box explaining the error.
  • Upgraded from SDL1.2 to SDL2 with the Raspberry Pi video driver. No more “white dot” when ES is starting.
  • es_systems.cfg is now in XML, to be consistent with every other configuration file.
  • An actual website: https://www.emulationstation.org. Huge thanks to Nils for design suggestions/tweaks, as usual. It includes a detailed “Getting Started” page.
  • More!


Visit the download section on the new website!

Expect bugs! We are literally just two people, a single person doing programming and a single person doing QA. When they happen, post them to GitHub (but make sure you’re not making a duplicate issue! Check closed issues too!).

Note: the “version 2.0” code is currently in the “unstable” branch of the git repository. Once things are working fine, it will be merged into the master branch.

The RetroPie blog will have a post about the updates to the RetroPie Setup script soon, if you’re using the Raspberry Pi.