RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Announcing Pegasus Frontend

    Scheduled Pinned Locked Moved Ideas and Development
    frontendpegasusc++developmentqml
    1.7k Posts 145 Posters 5.1m Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • fluffypillowF
      fluffypillow
      last edited by

      @dudleydes I was just playing around with multiple PS3 controllers, and noticed that you can run xboxdrv in daemon mode, which should solve the reconnection issues. I've launched it like this:

      sudo xboxdrv --detach-kernel-driver --mimic-xpad -s --next-controller -D --dbus disable
      

      There was a bug in xboxdrv where unplugged controllers didn't un-register themselves, but that was fixed in version 0.8.6. You might want to try that if you have troubles.
      Also you can see a bunch of debug information if you set the env var QT_LOGGING_RULES="qt.gamepad=true" before launching Pegasus.

      D 1 Reply Last reply Reply Quote 0
      • D
        dudleydes @fluffypillow
        last edited by

        @fluffypillow Thanks for this. I shall take a look at it.

        The issue regards xboxdrv wasn't unplugging and replugging the PS3 controller. It was more that it couldn't be used in Pegasus and in emulators. A possibility would be to reconfigure the controller running with xboxdrv but I have spent a lot of time configuring my PS3 controller, often for individual games such as DOS games, so I'd rather not go through that again.

        I have the Linux Joystick Mapper program working as I would like now. I can exit Pegasus to the CLI without it restarting and I have placed a copy of my original start-joymap.sh script in the home folder, renaming it start-pegasus.shso that I can launch Pegasus with the mapper program from the command line, much in the way ES2 is launched by running the command emulationstation. I have done further testing in launching games that require xboxdrv or the Linux Joystick Mapper and everything is working fine with no conflicts.

        xboxdrv is probably the better solution as it can already be installed from the RetroPie script (incidently it's version 0.8.8 that is installed). It's just a case of being able to use the PS3 controller with xboxdrv in Pegasus and the default configurations in the emulators. If you find a solution then let me know. I'd be happy to test and, if successful, demonstrate to interested users how to set up the Pegasus frontend.

        1 Reply Last reply Reply Quote 0
        • T
          tronkyfran
          last edited by

          @fluffypillow Ive got a question about a possible functionality of this frontend:
          Ive had to leave on standby one new theme because of the daunting task of converting so many scraped images(Game covers) into a different perspective. The fact is that if I had something like a "cornerpin" function and an add Mode for mixing images it would be really easy and people could use their scraped images. I know Im maybe asking for too much, thx for your work.

          fluffypillowF 1 Reply Last reply Reply Quote 0
          • fluffypillowF
            fluffypillow @tronkyfran
            last edited by

            @tronkyfran you can rotate every UI element by all three axes ("3D-like"), around a custom point, and you can scale horizontally and vertically. You can also write custom OpenGL shaders, which would allow you to do pretty much anything with a picture.

            1 Reply Last reply Reply Quote 1
            • T
              tronkyfran
              last edited by

              Every UI element means vídeo preview box is included? If thats right them I just would need to test if the raspberry gives enough performance to run my theme, awesome!!!

              fluffypillowF lilbudL 2 Replies Last reply Reply Quote 1
              • fluffypillowF
                fluffypillow @tronkyfran
                last edited by

                @tronkyfran yup, including the video. You can also animate these properties, making things spinning or moving things around the screen. Or make people feel dizzy :)

                1 Reply Last reply Reply Quote 0
                • lilbudL
                  lilbud @tronkyfran
                  last edited by

                  @tronkyfran said in Announcing Pegasus Frontend:

                  enough performance to run my theme

                  Wait, are you making a theme for Pegasus? how?

                  Creator of the Radiocade: https://retropie.org.uk/forum/topic/6077/radiocade

                  Backlog: http://backloggery.com/lilbud

                  1 Reply Last reply Reply Quote 0
                  • fluffypillowF
                    fluffypillow
                    last edited by

                    Got the analog navigation working, I'll clean up the code a bit tomorrow then merge it.

                    1 Reply Last reply Reply Quote 1
                    • T
                      tronkyfran
                      last edited by

                      @lilbud Well, not exactly "making", I have a lot of assets for an emulationstation theme, but it implied to make a lot of custom game art for it and I simply dont have the time right now. But if I can reuse the scraped art somehow....thats a different thing. The fact is that I have now to take a look to the theming process here in pegasus and how to adapt the assets, so I have a long way to go yet, but at least there is a possibility for my idea to come true :D
                      This were some sketches of it: I would need to reproject cart art and video preview, and suppose I will have to let go the depth of field blur and some other things. Took a look to opengl shading and it should help a lot... :D
                      alt text

                      fluffypillowF 1 Reply Last reply Reply Quote 0
                      • fluffypillowF
                        fluffypillow @tronkyfran
                        last edited by

                        @tronkyfran Nice! Yes, it'd be possible to create such a theme, but yeah getting the cart art right might be slightly difficult (but not impossible). There's a bunch of built-in shaders as well, so for just blurring you won't need to write them manually. Here's a list of available graphical effects.

                        1 Reply Last reply Reply Quote 0
                        • fluffypillowF
                          fluffypillow
                          last edited by

                          Weekly changelog:

                          • Pegasus can now be controlled with more than one gamepad (in case you had problems before; also this item would need some testing)
                          • added gamepad analog stick navigation support
                          • the list of languages is no longer hardcoded
                          • minor changes due to cleaning up the code
                          DarksaviorD 1 Reply Last reply Reply Quote 1
                          • DarksaviorD
                            Darksavior @fluffypillow
                            last edited by Darksavior

                            @fluffypillow Thanks for the analog controls. Seems to work fine.

                            I just tried it now. Sad to see there's now spacing in between games. I really liked the way they were before. Hopefully you'll add choices in how it looks in the future. Have you thought on how to adjust the layout? I'd figure rows of 5, 4, 3, or 2 horizontal. 4 seemed really well for sfc and cd games. I'd like to see how well 3 looks for arcade games.

                            fluffypillowF 1 Reply Last reply Reply Quote 0
                            • fluffypillowF
                              fluffypillow @Darksavior
                              last edited by

                              @darksavior Pegasus should show 4 columns for platforms with wide box art (eg. SNES) and 5 for tall ones (eg. NES). Previously it was manually set to 5 for the NES, but a few weeks ago I've changed it to guess the columns from the actual images. It should look like this:
                              https://snag.gy/35f7we.jpg
                              https://snag.gy/cOAIy6.jpg

                              If there are random spacings around, that's likely a bug (can't test with all possible box arts after all).

                              AndersHPA 1 Reply Last reply Reply Quote 0
                              • AndersHPA
                                AndersHP @fluffypillow
                                last edited by

                                @fluffypillow It looks so awesome!
                                What's the status in regards to us non-coders, plain gamers?

                                Does it make sense to install it now, or should we wait a couple of months?

                                My "Bubble Bobble" Themed Bartop Arcade
                                My Gameboy

                                fluffypillowF 1 Reply Last reply Reply Quote 0
                                • fluffypillowF
                                  fluffypillow @AndersHP
                                  last edited by

                                  @andershp it should be fairly stable and work fine for general use. Its just that it's not too user friendly yet, lacks documentation and some features are not yet done (game entry editing, system informations, custom config files, a clock in the corner). You can give it a try, see how it works for you.
                                  Steam support and RetroArchivements integration is also planned, a theme repository and an update checker might be useful too, and we'd need a nice logo/icon in the future as well.

                                  lilbudL AndersHPA 2 Replies Last reply Reply Quote 0
                                  • lilbudL
                                    lilbud @fluffypillow
                                    last edited by

                                    @fluffypillow said in Announcing Pegasus Frontend:

                                    we'd need a nice logo/icon in the future as well.

                                    I'll be here if you need help

                                    Creator of the Radiocade: https://retropie.org.uk/forum/topic/6077/radiocade

                                    Backlog: http://backloggery.com/lilbud

                                    1 Reply Last reply Reply Quote 1
                                    • AndersHPA
                                      AndersHP @fluffypillow
                                      last edited by

                                      @fluffypillow Custom config files - as in retroarch.cfg files?

                                      My "Bubble Bobble" Themed Bartop Arcade
                                      My Gameboy

                                      1 Reply Last reply Reply Quote 0
                                      • fluffypillowF
                                        fluffypillow
                                        last edited by

                                        @AndersHP as in game list and system definition files. Currently Pegasus uses ES2's XML files, but it shouldn't depend on them.

                                        @lilbud I've made a GitHub issue for it previously, but didn't really made progress on it; I'll add some "inspirational materials" and details the weekend in case you want draw something nice.

                                        @dudleydes could you create a new issue for the controller problem? I'd be easier for me to see the related discussion in one place.

                                        D 1 Reply Last reply Reply Quote 0
                                        • D
                                          dudleydes @fluffypillow
                                          last edited by

                                          @fluffypillow I have created an issue at the Github page.

                                          I have installed Qt Creator on my desktop but I really can't figure out how to create a theme for Pegasus. I would be grateful if you could give a guide on how to get started.

                                          fluffypillowF 1 Reply Last reply Reply Quote 0
                                          • fluffypillowF
                                            fluffypillow @dudleydes
                                            last edited by

                                            @dudleydes yeah the theming is still not properly documented, but you can use the Flixnet theme as an example in the meanwhile (or the default theme, which has some more complex parts).

                                            In short, every theme needs a theme.ini metadata file and a theme.qml, the main QML file. These files should be under ~/.config/pegasus-frontend/themes/<theme name>/.

                                            The theme.ini is a list of key = value pairs, you'll need at least a name (other values aren't used at the moment). The format may also change in the future, eg. I'll likely start using : instead of =.

                                            The theme.qml is the QML component that'll fill the screen, which at the moment must be a FocusScope with active focus:

                                            import QtQuick 2.7
                                            
                                            FocusScope {
                                                focus: true
                                            
                                                // your code here
                                            }
                                            

                                            Other than that, you're free to use whatever QML elements you want (EXCEPT the Qt Quick Controls 1/2 items, as they aren't really for this kind of application and are not available in the automatic builds).

                                            To access the game data, you can use the similarly undocumented pegasus object:

                                            • pegasus.platforms is a list (= you can use as a model) of platforms
                                            • pegasus.currentPlatform is the currently selected platform
                                            • pegasus.currentPlatformIndex is the index of the currently selected platform (most parts are read-only, but this is a field is writable)

                                            Every platform has a shortName (eg. nes) and longName (which is currently empty as ES2 files only have one <name>) field, and games, currentGame and currentGameIndex fields, which work similarly as listed above.

                                            Finally, every game has the following single-value fields: boxFront, boxBack, boxSpine, boxFull, box (same as boxFull), cartridge, logo, marquee, bezel, gridicon, flyer, music, and the following lists: fanarts, screenshots, videos.

                                            Note that values may be empty (eg. no games for a platform, or no particular asset for a game). The field names may also change (we're still in alpha). Also in case you see .qmlc files, those are caches, no need eg. commit them to Git or such.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.