RetroPie forum home
    • 最新
    • 標籤
    • 熱門
    • Home
    • Docs
    • 註冊
    • 登入

    Announcing Pegasus Frontend

    已排程 已置頂 已鎖定 已移動 Ideas and Development
    frontendpegasusc++developmentqml
    1.7k 貼文 145 Posters 6.3m 瀏覽
    正在載入更多貼文
    • 從舊到新
    • 從新到舊
    • 最多點贊
    回覆
    • 在新貼文中回覆
    登入後回覆
    此主題已被刪除。只有擁有主題管理權限的使用者可以查看。
    • E
      EctoOne @fluffypillow
      最後由 編輯

      @fluffypillow Your layout might work. When I tried it, I also had the Roms in the corresponding subfolders and apparently ES is not capable to directly access those files.
      I have to see if your layout is easy to manage or if I keep my current layout with subfolders for each media type within the rom directory. Although I currently prefer my layout because I can easily switch image paths by renaming the folders instead of editing the gamelist.xml.

      1 條回覆 最後回覆 回覆 引用 0
      • DarksaviorD
        Darksavior @fluffypillow
        最後由 Darksavior 編輯

        @fluffypillow My setup is to use as much scraped art as I can from ES for backwards compatibility with ES. I did add the logo and screenshot art that's pegasus exclusive to go in the ES folders /opt/retropie/configs/all/emulationstation/downloaded_images/

        I faintly remember the logo/screenshot art default was the roms folder which is in my usb stick. I prefer to have all my scraped art together which is on my microsd.

        I also remember what a pain in the butt it was to scrape or add the art manually. I hope pegasus can have a scraper of its own in the future. Another step to get away from ES.

        1 條回覆 最後回覆 回覆 引用 0
        • N
          nemo93
          最後由 nemo93 編輯

          hi @fluffypillow! I'm still amazed by the progress and functionalities you keep adding on a very regular basis ;) If you don't mind I have 4 additional feedbacks I'd like to share.

          1. I'm doing a lot of testing these days with adding/removing multiple roms as well as refreshing images/video/metadata. I couldn't find an easier way but to reboot the Pi every time I want to add a new rom or whenever I change my "gamelist.xml" with more/less data. Any chance to see a "restart Pegasus" item or even better a "refresh roms/metadata" item in the menu?

          2. since you added the key binding and metadata directories stuff I can see a mouse cursor on top left corner of Pegasus UI. Definitely not an issue just a minor annoyance as I'm using Pegasus only with a controller. If you could implement an option to show/(auto)hide the cursor that would be great.

          3. I've made some stability testing as my Pi is on 24/7/365 (poor thing!). Pegasus proved excellent on that matter. Not a single crash in more than 2 weeks with some precautions. It seems that the more videos (previews of games) Pegasus plays the slower the UI behaves. By slower I mean that after playing several dozens of videos then the UI stops responding for few seconds (when moving to another game boxart) and then it goes back to normal speed. I've also experienced one crash after I left Pegasus on the default system (Amiga in my case) playing back a preview over and over again. After some time (I can't be precise) but it should be around 12-14h perhaps the Pi crashed completely. I had to hard reset. So basically anytime I reboot the Pi I take care to not let the UI playing back a video. I go to the Retropie section where there's no video or go to some game without preview and then everything goes absolutely ok. All to say that to restrict the number of time a video could play would help a lot to improve stability.

          4. Also but this might be related to Pi hardware itself it seems that previews of mp4 video with high profile (+high bitrate) in 60fps do make playback to stutter. Should I decide to re-encode the video with lower profile and bitrate playback is smooth.

          If I've missed something or done something wrong please keep me honest. Thank you once again for this amazing frontend.

          1 條回覆 最後回覆 回覆 引用 0
          • fluffypillowF
            fluffypillow
            最後由 編輯

            @EctoOne @Darksavior then for now I'll leave the ES2 downloaded_images as it currently, and change only the media dir searching. We'll see how that turns out then.

            @Darksavior Actually I did play with the idea of making a scraper, but then started working on Pegasus :) Some kind of external scraper support will likely be added in the future though.

            @nemo93

            1. Yes, a reload function is planned, but that will require some more work on the whole data loading. It'll certainly come in some form in the future.
            2. Hm, a cursor should only appear if the OS detects a plugged in mouse device. Perhaps some controllers are also detected as having mouse components (eg. the DS4's touch pad)? You can list the connected devices with ls -l /dev/input/by-id in the terminal, see if there's anything funny there. Other than that, defining the environmental variable QT_QPA_EGLFS_HIDECURSOR can also hide the cursor (eg. add export QT_QPA_EGLFS_HIDECURSOR=1 to ~/.bashrc or to the top of /opt/retropie/configs/all/autostart.sh). [Side note, does RetroPie load .bashrc on start?]
              3-4. Thanks for the detailed testing! I think the video-related issues are caused by GStreamer, the playback backend used on Linux (at least, that tend to produce warnings during playback). I'm afraid I can't do too much about that other than waiting for upstream improvements, but playback limiting could be indeed added as a workaround. I wonder if there's any other GStreamer-using video player available for the Pi (Banshee? Parole?), so we could see if the issue happens there too.
            E 1 條回覆 最後回覆 回覆 引用 0
            • E
              EctoOne @fluffypillow
              最後由 EctoOne 編輯

              @fluffypillow Would it be possible to add an option to ignore subfolders for certain systems?
              Then a folder layout like this would be possible without the need to enter the subfolders:

              /system
               /game1
                game1.zip (or whatever rom extension)
                game1.xml (contains the basic metadata for that particular game)
                boxart.jpg
                thumb.jpg
                logo.png
                video.mp4
              /game2
                game2.zip
                game2.xml
                boxart.jpg
                thumb.jpg
                logo.png
                video.mp4
              

              Again, this is an available option in Kodi when you link an movie folder to your database. I currently don't want that for any paths, just to hide subfolders for certain systems (if they are not declared in the gamelist).
              Since I currently don't know how gamelists are created by Pegasus, I use ES as example to make one. That's why I want to have the xml files in the rom folder so that they can be combined by a script or directly with Pegasus (whatever is possible) . So whenever you remove/add a game by adding its folder you can re-run the script to rebuild/clean the gamelist. Only downside would be to loose information for lastplayed and playcount (but I personally don't care for those anyway).

              A simple xml would then look like this:

              
              	<game>
              		<path>./game1/game1.zip</path>
              		<name>game1</name>
              		<desc>game1 description</desc>
              		<image>./game1/folder.jpg</image>
              		<marquee>./game1/logo.png</marquee>
              		<video>./game1/video.mp4</video>
              		<thumbnail>./game1/game1.jpg</thumbnail>
              		<rating>0</rating>
              		<releasedate>19910101T000000</releasedate>
              		<developer>someone</developer>
              		<publisher>someone else</publisher>
              		<genre>pewpew</genre>
              	</game>
              

              Setting up new files would then require only to change the paths and the file name of the rom.

              This it a suggestion for easier game management and not necessarily for media paths.

              fluffypillowF 1 條回覆 最後回覆 回覆 引用 0
              • fluffypillowF
                fluffypillow @EctoOne
                最後由 fluffypillow 編輯

                @ectoone So if I understand correctly, you'd like to keep the one game = one directory setup, and generate the gamelist-equivalent for Pegasus with a script, right? This is possible; first you'd create a collections.txt file under /system/ (in your example above):

                collection: My Games
                extension: zip
                launch: myemulator "{file.path}"
                

                Then you'd have a metadata.txt (or whatever you'd like to call it) in each of your game directories, like this:

                file: $CWD/game1.zip
                title: Game 1
                description: The #1 of Games
                assets.boxFront: $CWD/boxart.jpg
                assets.video: $CWD/video.mp4
                rating: 99%
                release: 1991-01-01
                developer: Someone
                publisher: Someone Else Ltd.
                genre: pewpew
                

                Then you'd run a script that goes through these small metadata files, replaces a piece of text with with the path to the game directory and merges the results together into a /system/metadata.txt file. Something like this:

                #! /bin/bash
                
                rm metadata.txt
                for i in $(find $(pwd) -name metadata.txt); do
                	sed "s|\$CWD|$(dirname $i)|g" $i >> metadata.txt
                	echo >> metadata.txt
                done
                

                In this example I've used $CWD as something that will be replaced with the file's path. You can use whatever you want, or, if you're good with regex, you could actually use just a dot too and tweak the command accordingly.

                (The file format itself is documented here.)

                E 1 條回覆 最後回覆 回覆 引用 0
                • E
                  EctoOne @fluffypillow
                  最後由 編輯

                  @fluffypillow I'm a noob when it comes to write scripts but yes, I believe you understood what I meant.
                  My question still is, what will show up in Pegasus afterwards. A bunch of folders with the corresponding games or just the games?
                  If it's the later that would be perfect.

                  fluffypillowF 1 條回覆 最後回覆 回覆 引用 0
                  • fluffypillowF
                    fluffypillow @EctoOne
                    最後由 編輯

                    @ectoone Just the games :) You can use the script above as-is (save it as eg. get-meta.sh under /system/) or you can use the following one-liner after cding into /system/:

                    rm metadata.txt; for i in $(find $(pwd) -name metadata.txt); do sed "s|\$CWD|$(dirname $i)|g" $i >> metadata.txt; echo >> metadata.txt; done
                    
                    1 條回覆 最後回覆 回覆 引用 1
                    • fluffypillowF
                      fluffypillow
                      最後由 編輯

                      I've just made a script that converts the current media layout to the new one, you can get it here. Copy it next to the media dir, make it executable (chmod +x convert_media.py) and run from there (./convert_media.py). It will ask for confirmation before changing anything, but you might want to backup/zip your current media dir first.

                      1 條回覆 最後回覆 回覆 引用 0
                      • N
                        nemo93
                        最後由 編輯

                        Thanks @fluffypillow. I do confirm that I had a wireless keyboard/mouse combo connected to my Pi hence the cursor! Your workaround works nicely. Regarding the player to be honest I don't know. Seems like OMXplayer is the other player available for the Pi but not sure it's as flexible as Gstreamer. I'm wondering if the fact most of my previews are running at 60fps can be a cause of the crash.

                        1 條回覆 最後回覆 回覆 引用 0
                        • S
                          SephirothX2004
                          最後由 編輯

                          I have Pegasus running great on my android phone however i would like to request the ability to have different wallpapers for each system if at all possible.

                          1 條回覆 最後回覆 回覆 引用 0
                          • fluffypillowF
                            fluffypillow
                            最後由 編輯

                            @nemo93 sorry for the late reply; 60fps shouldn't be a problem, unless GStreamer itself has a related bug (haven't found bug reports about that yet, but could happen). Another thing I suspect is perhaps the Pi is getting a bit hot, causing the playback to crash. Or maybe the system runs out of memory (and/or VRAM). I think if you launch Pegasus through SSH, you might be able to see GStreamer warnings, that might help.

                            @SephirothX2004 the default theme shows the screenshot for the selected game (if there's any). There's no built-in way to change that, however, it's possible to change the the default theme to load a custom image instead (but that'll need some minor coding).

                            1 條回覆 最後回覆 回覆 引用 0
                            • fluffypillowF
                              fluffypillow
                              最後由 編輯

                              And this week's update has just landed:

                              • Breaking Change: the way assets are searched in the media dirs is changed to the model described here, ie. assets for a particular game are now stored under media/<gamename>/)
                              • A script for converting the current layout can be found here
                              • ES2's downloaded_images will continue to work, even with the "Pegasus-exclusive" asset types

                              Meanwhile I've also started working on themes, and almost finished porting the ES2 Simple theme:

                              img

                              T halfmanhalfcakeH 2 條回覆 最後回覆 回覆 引用 2
                              • T
                                tronkyfran @fluffypillow
                                最後由 編輯

                                @fluffypillow WOW!!!!Awesome work as always!! It will have carousel for system selection? Having some more example themes will be a game changer for theme makers(at least for those with less programming savvy as me).
                                Thanks!!!!

                                fluffypillowF 1 條回覆 最後回覆 回覆 引用 0
                                • fluffypillowF
                                  fluffypillow @tronkyfran
                                  最後由 編輯

                                  @tronkyfran yup, that part works too, here's a video: https://my.mixtape.moe/bdfxqx.webm (made mostly out of memory, so may not be 100% accurate). Also using this as a template, it would be possible to port pretty much every ES2 theme to Pegasus too.

                                  T 1 條回覆 最後回覆 回覆 引用 1
                                  • halfmanhalfcakeH
                                    halfmanhalfcake @fluffypillow
                                    最後由 編輯

                                    @fluffypillow Amazing work. Look forward to more themes.

                                    1 條回覆 最後回覆 回覆 引用 0
                                    • T
                                      tronkyfran @fluffypillow
                                      最後由 編輯

                                      @fluffypillow I was thinking about that port possibility. It would be as easy as make a little script to convert to Pegasus format or are you planning ES theme "support" out of the box? In any case It would multiply the theme choices forma pegasus

                                      fluffypillowF 1 條回覆 最後回覆 回覆 引用 0
                                      • fluffypillowF
                                        fluffypillow @tronkyfran
                                        最後由 編輯

                                        @tronkyfran technically it would be possible to automate the porting, but I'm not sure I want to deal with all the possible cases an ES theme might have (at least for now, we'll see later). I do plan to make the Simple theme commented instead though, so it could be used as a template for further porting.

                                        1 條回覆 最後回覆 回覆 引用 1
                                        • fluffypillowF
                                          fluffypillow
                                          最後由 編輯

                                          Ok, I think the theme is ready for a public release, I've just uploaded it here, give it a try!

                                          What's missing:

                                          • help prompts
                                          • scrolling descriptions
                                          • filtering/searching
                                          • page up/down in the game list

                                          Also I've just noticed that unlike in the previous video, background doesn't scroll in real ES2, but I've left it as is (it's more fun this way). The theme code is not really trivial, so I've added a bunch of comments. Feel free to tweak things!

                                          T 1 條回覆 最後回覆 回覆 引用 1
                                          • T
                                            tronkyfran @fluffypillow
                                            最後由 tronkyfran 編輯

                                            @fluffypillow OMG! going to test it RIGHT NOW. That theme template is GOLD for me :D
                                            Just one more question, this is a bit crazy and absolutely not a request, but ....now that retroarch is "avaiable" on nintendo switch, do you think it would be theoretically possible to port pegasus there? I have zero knowledge about the hardware, the only thing I know is that its TEGRA based.
                                            Again, Thanks for your work!!!!

                                            fluffypillowF 1 條回覆 最後回覆 回覆 引用 0
                                            • 第一個貼文
                                              最後的貼文

                                            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.