Please do not post a support request without first reading and following the advice in

Announcing Pegasus Frontend

  • @bjretro It's a good question. Pegasus only "installs" by getting placed on the sd card and nothing else changes. So, EmulationStation still runs as normal, and to test Pegasus, you have to quit ES and type the code mentioned in #1 under Retropie Package. If you like Pegasus and would like your Pi to boot directly into this frontend instead of EmulationStation, add the code in the, also mentioned there.

    I have not tinkered with the frontend chooser, as I only use Pegasus now, but I'm using gamelist and metadata the default places (as Universal XML Scraper does) and this works in both frontends.

    My suggestion is; give it a whirl, you can always go back to ES. Me, I'm staying with Pegasus.

    Edit: Ah, @fluffypillow - beat me to it :)

  • And another update for the week, Pegasus now keeps track of play times (except it's not displayed on the main theme yet, but that will be added later). I've also updated the list of changelogs of the first post.

  • @fluffypillow I just wanted to say thank you for the dedication. The professionalism of the regularity of updates and documentation is top notch, and frankly, something that is amazing for a free piece of software. UX and design aesthetics are top-notch as well. I'm looking forward to making this my main launcher. I really hope this becomes the standard frontend for RetroPie in the future. Kudos!

  • @jonathandownin You're welcome :)

  • @jonathandownin
    I second this.
    And people shouldn't be scared off by the fact that you call it "alpha" versions. This frontend is more stable than EmulationStation as far as I'm concerned.

  • Thanks, it means a lot :)

    Also I've just added a visible play time counter to the main theme, you can check it on the game details panel. There's a bug though, the value will only update when Pegasus is (re)started -- fixing this will need some minor structural changes, but if that's done, it'll also pave the way for achievement support.

  • Hello All. I'm quite impressed after the installation of Pegasus from experimental. It works beautifully. What a fluid, fast and clear frontend. Thanks to @fluffypillow for this amazing piece of software.

    Now I understand this is alpha but is there a better official way to report issues? Or should I just post anything in there?

    I have issue with my "gamelist.xml" export/import. The outcome being for Pegasus to not display image/description of games. This is output from "lastrun.log". I'm running Retropie 4.4.2 on a Pi3b+.

    Found locale 'American English' (`en`)
    Found locale 'español de España' (`es`)
    Found locale 'français' (`fr`)
    Found locale 'magyar' (`hu`)
    Found locale 'magyar (rovás)' (`hu-Hung`)
    Locale set to 'American English' (`en`)
    Found theme 'Pegasus Grid [built-in]' (`:/themes/pegasus-grid/`)
    Theme set to 'Pegasus Grid [built-in]' (`:/themes/pegasus-grid/`)
    ES2: found `/home/pi/.emulationstation/es_systems.cfg`
    ES2: found `/home/pi/.emulationstation/gamelists/psx/gamelist.xml`
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: found `/home/pi/.emulationstation/gamelists/segacd/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/megadrive/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/amiga/gamelist.xml`
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: found `/home/pi/.emulationstation/gamelists/sega32x/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/mame-libretro/gamelist.xml`
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: found `/home/pi/.emulationstation/gamelists/nes/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/mastersystem/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/fba/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/neogeo/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/snes/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/pcengine/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/pcecd/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/retropie/gamelist.xml`
    ES2: found `/home/pi/.emulationstation/gamelists/scummvm/gamelist.xml`
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: Expected '#' or '[a-zA-Z]', but got ' '.
    ES2: found `/home/pi/.emulationstation/gamelists/n64/gamelist.xml`
    Data files loaded in 5230ms
    6164 games found
    qrc:/themes/pegasus-grid/layer_platform/PlatformCard.qml:73:5: QML Image: Cannot open: qrc:/themes/pegasus-grid/assets/logos/mame-libretro.svg
    qrc:/themes/pegasus-grid/layer_platform/PlatformCard.qml:73:5: QML Image: Cannot open: qrc:/themes/pegasus-grid/assets/logos/pcecd.svg
    Executing command: `/opt/retropie/supplementary/runcommand/ 0 _SYS_ nes "/home/pi/RetroPie/roms/nes/1942 (Japan, USA).zip"`
    Process 1220 started
    The external program `/opt/retropie/supplementary/runcommand/` has crashed
    The external program has crashed on exit, with exit code 15

    After some digging I found out thanks to the conversion tool here that possibly the special character "&" (ampersand) is messing up with the frontend. This character in the description or anywhere in the "gamelist.xml" file generates those errors. I do not want to amend all my "gamelist.xml" files. Is there a way to bypass this please?

    Another feedback is that I got a mix of vertically as well as horizontally-oriented box cases. Best showcase of this is with the NES. Japanese games mostly come with vertically-oriented boxes whereas rest of the world, cases were horizontal. It doesn't look that good with the default theme (which I truly love btw). I don't know how to explain this better but it's like having some "holes" in the pictures wall.

    I'll post in this space should I have more feedback by default. Please keep on the good work this is brilliant.

    Thank you

  • @nemo93 glad you like it :)

    is there a better official way to report issues? Or should I just post anything in there?

    Yeah the thread might've got a bit too long for bug tracking. You can report issues on GitHub; I also tend to create entries for the stuff that's mentioned here in the forum too.

    the special character "&" (ampersand) is messing up with the frontend

    Yes, the XML specification does not allow & in the text:

    The ampersand character (&) and the left angle bracket (<) MUST NOT appear in [text sections].
    If they are needed [in text sections], they MUST be escaped using either numeric
    character references or the strings "&amp;" and "&lt;" respectively.

    I'd prefer to avoid frontend-specific hacks in the code; most text editors support mass text replace across multiple files (eg. Notepad++, Sublime, or even plain sed), so this should be relatively easy to fix in the files themselves. If a scraper generated this file for you, you might want to report this as an issue for the devs.

    It doesn't look that good with the default theme

    Yeah, mixed cases tend to look ugly with the current layout, but I'm not sure yet what would be the best way to solve that (maybe by cropping portraits?). This one also has an issue report here.

  • A huge internal update has just landed, where I've redesigned the way everything is loaded, and also optimized the memory and CPU usage. In practice this means play time (and in the future, achievements) now update correctly when you return to Pegasus from a game. It may improve the loading times too.

    Now this affects pretty much everything that loads, games, assets, ES2 support, favorites... While most things are tested in Pegasus, there may always be unexpected cases, so please report if anything's missing.

    I've also made a new loading screen:


    (The progress bar is not particularly accurate yet, but that can be improved later)

    Also I'll be away for a few days, so there might be no new updates this week. After that, the next area I'll likely work on is improving the gamepad support and the settings menu, and some documentation. (also feel free to remind me if you think I've forget to add something promised before, and it doesn't have an issue either)

  • Great work again, love the new loading screen :)

    I should really go back to working on themes, just haven't had the time to finish them off.

  • @fluffypillow
    yeah, I love the loading screen also, the splash of colors is really nice.

    Also tried the --silent option, it really looks almost completely seamless now, great job!!

    If I should comment on one little thing, when booting games, the terminal (including whatever's left of code there) is still shown for a second - if this could get eliminated, you're completely there!

    Also, I tried to provoke the segmentation fault I get when fast scrolling through games but couldn't - seems like you got that sorted, brilliant, brilliant work!

    Last thing; I still cannot get into runcommand menus, nomatter when or what I tap, it just boots the game. So, to change emulator etc, I still have to use EmulationStation.

  • @fluffypillow
    The new loading screen is incredible, but it seems to me that it is not in high definition, because here on the screen fullhd the image seems to be blurred.

    But anyway great work!

  • @fluffypillow Any update on the usb keyboard not working when loading retropie-setup or anything else from within Pegasus?

  • @AndersHP

    the terminal (including whatever's left of code there) is still shown for a second

    Hmm, not sure how much control I have over that -- it's already the launched program's "territory". As a workaround, you could try running clear when the system boots (eg. by adding it before Pegasus in /opt/retropie/configs/all/, or editing runcommand itself (/opt/retropie/supplementary/runcommand/, I think) to call clear first.

    segmentation fault

    Good to hear it works, and thanks :)

    I still cannot get into runcommand menus

    and @Darksavior: couldn't fix that yet, sorry :/ I haven't found out the exact cause of this bug yet, but I'll keep trying, and dig deeper in the low-level platform code.

    @honorio96 sure, this could be improved. I've mainly tested on 720p, but I can add bigger/smaller logo images for other resolutions.

  • thanks @fluffypillow for your clear explanations. I did learn something! Indeed after the replacement of every "&" characters it's all fine. Therefore I'm now using your frontend as default. Do you mind if I share some further issues/feedback in this space?

    1. Mixed cases/boxarts. Sounds like cropping is the straightforward answer here. Perhaps for some cases you can rotate them left or right and on hovering rotate them back to their original view. Not sure I'm clear but anyhow it shouldn't be a good fit for all cases. For SNES the Japanese covers will need cropping as rotation here won't help.
    2. Sound. Depending on video snaps/previews sometimes sound can be low/loud. Any chance to have an option to control sound volume? Even better would be a volume limiter to not go above a specific level.
    3. Marquees. Despite having them in my ES2 gamelist.xml files they don't show up. I'm using tag <marquee> and all files are present. Not sure what's going wrong.
    4. Players count. Like #3. I have the <players> tag in my ES2 xml but nothing show up in Pegasus.
    5. Genre. Same as #3 and #4. The <genre> tag is there but none appears in Pegasus.
    6. Rating. Same as #3, #4 and #5.
    7. Video previews. Possible to play these only once? To have an option to play them in a loop or not would be nice.
    8. Fullscreen. I'm not sure but it seems that Pegasus UI is a bit zoomed-in. The selector on top with the different systems looks a bit cropped. It might be just an impression but definitely the systems selector on top doesn't look the same as in your preview from your 1st post. I didn't have any screen issue with ES2.
    9. Logos. In the logs (lastrun) I can see that "mame-libretro" and "pcecd" are not recognized hence their logos don't show up in the systems selector. For "mame-libretro" I'm not sure as I'm using standard from Retropie I guess if I rename everything with "mame" it should work but that sounds a bit tedious :) For "pcecd" this is a system I've added myself and I'd be happy to have a logo for it as well. It's the PC Engine CDROM.
    10. Favorites. I'm not sure where the favorites are located. I can see a favorites.txt in the Pegasus config dir but that's all. To have something similar to ES2 where you have a "new" system created with your favorites games listed would be nice.
    11. On-sceen help. I was a bit lost without indication the first time I tried the frontend. To have some indications in a form of a bottom bar like ES2 where various buttons+description would be nice. I was always hitting the "start" button of my X360 controller to access the options screen (I'm used to ES2 definitely!) but with Pegasus this button launches the games! Such help would ease the transition from ES2 to Pegasus.
    12. Jump-to-letter and filters. Not sure how to use these. The "Y"/yellow button on my X360 does nothing.
    13. Updates. I'm using Retropie and I can only update Pegasus "from binary". Not sure how to get the latest release with your latest commits. For instance how to get the playtime tracking you just added on week 67?
    14. Hidden tag. I'd like some items from gamelist.xml to not show up in the UI (eg. bioses). I'm using the <hidden> tag today but perhaps there's another way to do that.
    15. Games order. File name sorting is working. Awesome \o/ However I do see weird ordering on some occasions. For instance, Gun Force 2 (Geo Storm) is sorted before Gun Force: Battle Fire Engulfed Terror Island. Or Macross II (Super Dimension Fortress) before Macross (Super Spacefortress). Another example would be with the Street "Alphas" where Street Fighter Alpha: Warriors' Dreams (Street Fighter Zero) is sorted last after Street Fighter Alpha 2 (Street Fighter Zero 2) and Street Fighter Alpha 3 (Street Fighter Zero 3). Last example with SF3 same as SFA you've got Street Fighter III: New Generation after 2nd and 3rd Strike. These are the actual names I'm using in my gamelist along with the tag <name>. I don't mention it because I know this is rather complicated but the Mortal Kombats are not sorted properly as well. I suspect this is due to the II(double i) instead of a number in the title. Perhaps something could be done by mixing name with release date together? That way you're sure Mortal Kombat II can't be listed after Mortal Kombat 3. Not sure it works for all situations though.
    16. Pegasus config files. I've spent some time to study your collection/metadata files structure. It's brilliant. I'm converting my ES2 files right now. My feedback is that I don't like to have a .txt file in the roms directories. I'd like to keep things tidy. Would it possible to store those files in pegasus-feconfig directory instead? So that everything is kept at the same place :)
    17. List wrap. Would it be possible to get back to the top of a game list after pressing the down button from the controller? I mean whenever you get to the bottom of a list (and some lists can be huge like NES with 1000+ games) if you want to go back to the very top of it the only to do that is pressing the trigger several times. It can be tedious with larger lists.
    18. In ES2 after launching a game if I press quickly on a button ("X" on X360) I can reach out a "debug" screen where I can change some parameters like emulator type/name, showing games covers, resolutions, etc. Is it a feature of ES2 or something else? I'd be happy to have something similar in Pegasus.
      My use case is as follows. There are several MAME versions out there and some games work better with a specific version than other. Whenever a game requires a specific version other than the default "lr-mame2003" I launch this game then hit the "X" button. Finally I do select a specific MAME emulator I'd like to use for that game. I can then see the game and emulator are then added to the emulators.cfg file under Retropie > configs > all directory.

    Thank you again for making this really great frontend.

  • @nemo93 thanks for the feedback! Let's see...

    1. All videos are played on the system's volume level by default. While it'd be certainly possible to write an audio normalizer, unfortunately I'm not an expert in this topic to implement such a feature. I think FFMPEG or similar video editing tools could help with this, however.

    3-4-5-6. These properties are detected from the ES files, but currently aren't used in the default theme. They might be in future!

    1. Perhaps clicking on them could pause/start the video? (if you have a mouse/touchscreen, of course)
    2. Yeah that bar might be a bit too slim (especially on small screens), I'll see if making it bigger would look better. As for the fullscreen, if you see the whole logo for the system, then it's OK, Pegasus itself shouldn't crop the screen.
    3. Yes, the main theme only has image for mame. I'm not familiar with MAME, does this libretro version have a separate logo in RetroPie/ES? As for PC Engine, there's a logo for pcengine, would that be good or the CD version has a different logo? You can find the currently recognized names here, if you have some nice vector images, I can add them.
    4. Yes, they are stored in favorites.txt, and you can use the filter panel (Shift/PS-Triangle/Xbox-Y) to show only your favorites -- except opening this panel apparently broken using the gamepad, and I forgot to fix it. Other than that, the separate collection approach could also be done, it's just not implemented yet.
    5. Yeah I really want to add some kind of first start setup/tutorial screen, and also a help screen in the menu. I think the main theme would be a bit cramped with yet another bar, but other themes are free to show the controls.
    6. The button's broken using gamepads, will fix it :)
    7. RetroPie always downloads the latest release, as soon as it's available. There might be a separate stable/latest option eventually, but I still want to improve Pegasus a bit before that. I also plan to add an update checker eventually.
    8. I'm not sure how official this hidden tag is, it doesn't seem to be documented. Looks like this property is a metadata, so I should keep the games in memory, but make them invisible? That sounds like a waste... (Ignoring files is also possible using Pegasus' own config format, if you're willing to use it)
    9. Yes, they're sorted by file name, but they indeed should be by title. Will fix it in a minute.

  • I've added #14 and #15 :) Thank you for the responses. It's clear for me now.

    1. Sounds good. Actually if you can find a way to pause/start video for people with only controller (like me!) that would be great. Perhaps a controller button can be assigned or you can hover the video and click on it with "A"/select button.
    2. It should be the same mame logo. It's called mame-libretro to make difference with the various versions included in Retropie (eg. mame-mame4all, mame-advmame, etc). All these should be assigned the mame logo. For PCE CD it does have a different logo. You can get one here or here.

    Thank you!

  • @nemo93 also added #14 and #15 :) Thanks for the repo link, will check it out.

    1. to be honest I start wondering where I did hear about such tag... Anyhow I'm keen to understand a bit better your config format. I'm not sure how to proceed though. Thanks to your excellent ES2 <> Pegasus converter I can create metadata config files. Should I create one config file per system eg. nes.metadata.txt, snes.metadata.txt, megadrive.metadata.txt and so on? And then another files nes.collections.txt, snes.collections.txt etc?
      Let's assume Neo Geo for the sake of simplicity. I'd like to "hide" the bios name entry from the games list (the famous How should I proceed please? From your doc I'm not sure how both "collections" and "metadata" articulate with each other. Sounds like "collections.txt" is similar to es_systems.cfg but not 100% sure. Any example appreciated.

    I understand you might be on some well-deserved holidays. If so please no rush! Everything is running absolutely smooth already :)

    Thank you

  • @nemo93 A collections file is kind of like es_systems except it's local to its directory, ie. it will only search in the directory it's placed in (and also the subdirectories). It's task is to decide which files (in the directory) belong to which collection(s). The metadata file is pretty much like a gamelist.xml: it just adds information to the already found games, but doesn't add new games.

    A per-system file in each directory might be better, unless each system use different extensions. The file names are always just collections.txt and metadata.txt, eg. /home/pi/RetroPie/roms/neogeo/collections.txt. Then you'd add /home/pi/RetroPie/roms/neogeo to the game_dirs.txt.

    Now to actually ignore a file, you'd just use ignore-file; your collections file would look something like this:

    collection: Neo Geo
    shortname: neogeo
    extensions: zip
    launch: /something/myemulator "{file.path}"

Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.