Announcing Pegasus Frontend
-
@fluffypillow It happens on all libretro and non-libretro emulators. So it looks like it might be related to the report you posted. I tried going to one of the options from the retropie tab I got a black screen again, ctrl+c and got this:
[e] Could not queue DRM page flips on screen HDMI1 (Device or resource busy)
Pi4 is on stable kernel4.19.66-v71+
Side note, I also transferred all of my scraped art to pegasus. It's amazing. Very smooth. No lag. I can scroll fast and I don't see random game art loading while doing it.
-
Weekly update! A large set of changes has just landed, so careful with the updating. Last week I've started working on improving the gamepad support, now the initial implementation is complete, and replaces the whole gamepad handling on many platforms. It's now based on SDL2, which is also used by eg. PPSSPP, some of the ports and other emulators. These changes should make many gamepads work out of the box and improve compatibility with others. However some platforms may have driver issues or quirks, so the new implementation should be tried with as many devices as possible. Feel free to open issues on GitHub of mention here if you run into troubles.
At the moment, these changes are available for Linux (desktop) and Raspberry Pi 0/1/2/3. I'm working on the Windows support at the moment, then will continue with porting to macOS and the Pi 4 (and also the video problems). These and Android use the same code as before.
BREAKING CHANGES
- Linux: installing SDL2 is now required. If you're using any RetroPie version, it's very very likely to be already installed. For other devices, you can install it using eg.
sudo apt install libsdl2-2.0-0
(orlibsdl2-dev
if you prefer-dev
packages). At least version 2.0.4 is required (which is what you have at least, unless you're still on Ubuntu 14/Debian Jessie).
For Windows/Mac, it will likely be built into Pegasus, so no steps would be necessary there.
KNOWN ISSUES
- Remapping the accept button on the gamepad screen is troublesome. Checking older versions, I think it didn't work in the first place. Will fix it.
MAINTAINER INFORMATION
This section is for people who build or package Pegasus. There are a few new
qmake
options you can use to choose between the Qt (qtgamepad
) and the SDL based backend, and to configure the build flags.USE_SDL_GAMEPAD
: if set, the SDL based backend will be in useSDL_LIBS
: a space-separated list of linker flags (-L
,-l
)SDL_INCLUDES
: a space-separated list of include directories, where one of them contains the fileSDL.h
If only
USE_SDL_GAMEPAD
is set (ie.SDL_LIBS
andSDL_INCLUDES
are both empty),pkg-config
will be used on platforms where it is available.Example configuration (simple):
qmake path/to/sources USE_SDL_GAMEPAD=1
Example configuration (complex):
qmake path/to/sources USE_SDL_GAMEPAD=1 SDL_LIBS="-L/path/to/sdl/lib/ -lSDL2 -Wl,--no-undefined" SDL_INCLUDES=/path/to/sdl/include/SDL2/
Note that only the gamepad module is used from SDL, so if you're also building your own SDL, you can turn off many of its features during configuration. In most cases, it's also not necessary to link to
SDLmain
. - Linux: installing SDL2 is now required. If you're using any RetroPie version, it's very very likely to be already installed. For other devices, you can install it using eg.
-
@fluffypillow I've started looking at implementing a couple of custom collection files but I seem to be a bit stuck with getting it to work - any chance you could take a look at the below and let me know what seems to be missing?
I've got several collections working for "Systems" i.e. all the roms in one folder. What I am trying to do now is to add a few custom collections that may span multiple directories. All of my metadata files are in the pegasus/config/metafiles directory and not in the rom folders.
What I have found is if I do not include the "extension" in the collection it doesn't find any files. The problem is if "extension" is included I end up pulling in ALL the games from each folder and not just the few specific games I want to include in a given collection. I'm not sure if I am missing a setting to have it just target the specific files and not everything in the folder.
Here is a simple example I was using to test, just trying pull in 2 games from each of the directories below:
collection: Custom Collection shortname: custom directory: ..\..\..\roms\virtualboy directory: ..\..\..\roms\sgfx files: ..\..\..\roms\sgfx\Dai-Makaimura (Japan).7z files: ..\..\..\roms\sgfx\1941 - Counter Attack (Japan).7z files: ..\..\..\roms\virtualboy\3-D Tetris (USA).7z files: ..\..\..\roms\virtualboy\Galactic Pinball (Japan, USA).7z
And it finds no files, with the log below:
2019-08-28T00:24:53 [i] Program settings loaded 2019-08-28T00:24:53 [i] Pegasus alpha12-81-geb4f8ff (2019-08-27) 2019-08-28T00:24:53 [i] Running on Windows 10 (10.0) (x86_64, windows) 2019-08-28T00:24:53 [i] Found locale `de` 2019-08-28T00:24:53 [i] Found locale `en` 2019-08-28T00:24:53 [i] Found locale `es` 2019-08-28T00:24:53 [i] Found locale `fr` 2019-08-28T00:24:53 [i] Found locale `hu` 2019-08-28T00:24:53 [i] Found locale `pt-BR` 2019-08-28T00:24:53 [i] Found locale `ru` 2019-08-28T00:24:53 [i] Locale set to `en` 2019-08-28T00:24:53 [i] Found theme 'Pegasus Grid' (`:/themes/pegasus-theme-grid/`) 2019-08-28T00:24:53 [i] Theme set to 'Pegasus Grid' (`:/themes/pegasus-theme-grid/`) 2019-08-28T00:24:54 [i] Metafiles: found `C:/Emulation/pegasus/config/metafiles/custom.metadata.txt` 2019-08-28T00:24:54 [i] Metafiles: finished game searching in 27ms 2019-08-28T00:24:54 [i] Steam: no installation found 2019-08-28T00:24:54 [i] Steam: finished game searching in 0ms 2019-08-28T00:24:54 [w] EmulationStation: system config file not found 2019-08-28T00:24:54 [i] EmulationStation: finished game searching in 0ms 2019-08-28T00:24:54 [w] No games found for collection 'Custom Collection', ignored 2019-08-28T00:24:54 [w] Game 'Galactic Pinball' does not belong to any collections, ignored 2019-08-28T00:24:54 [w] Game '3-D Tetris' does not belong to any collections, ignored 2019-08-28T00:24:54 [w] Game '1941: Counter Attack' does not belong to any collections, ignored 2019-08-28T00:24:54 [w] Game 'Ghouls'n Ghosts' does not belong to any collections, ignored
-
@msheehan79 It was actually a bug, thanks for the report! Should be fixed now in the latest version.
-
In other news, someone asked me (from outside the forum) if I could create a Discord server. Well I just made one, so if you're interested in that, here you go: discord.gg/KTtzP6y
-
@fluffypillow just downloaded the latest build and it works great now. Thanks!
-
@fluffypillow When you add additional custom metadata properties to a game or collection using the "x-" prefix, are these additional settings read into Pegasus?
My thought was to add some additional metadata info on the controller type used for specific games - I thought this would be a nice feature to note with with a simple icon showing if, for example, a game could be played with an SNES-style controller or if it needs the extra buttons/analog sticks of an XBox 360/PS4 style control etc.
However as I have been playing about with modifying the theme a little to see if I can read in this info I am not sure if these custom metadata properties would be available to the theme or if it only reads the standard ones.
-
@msheehan79 coincidentally, I was also thinking about extending these extra properties :) Currently they are ignored, but I'd like to make them available for the themes, and perhaps also support using them in launch commands.
-
Hello @fluffypillow
quick message just to let you know that the current "continuous builds" are broken for PI1/2/3 - and probably for X11 as well. There's no binary inside the zip archive. This has the side effect of removing Pegasus should you update via the Retropie Setup script.Thanks!
-
@nemo93 whoa, how did that even happen... will fix it in a minute.
EDIT: fixed, thanks!
-
@fluffypillow OK no worries, just wanted to confirm they aren't currently available. If you do incorporate this as a feature later on down the line, I will be sure to try it out!
-
Weekly update! Had a busy week again, but managed to land a few updates:
- The new gamepad handling is now in use on Windows too. Should work out of the box, no additional installation is necessary. Please report if you run into issues.
- Fixed a bug where the
files
field in metadata files was not handled correctly (thanks @msheehan79) - Fixed the Linux release packaging (thanks @nemo93) and updated the
.deb
package - Fixed some incorrect log messages and other minor things
-
@fluffypillow I noticed while testing some things this evening that the files fix you implemented seems to have broken the 'ignore-files' functionality in the metadata files. I spotted a couple of files that previously were ignored that now pop up in the list. When I rolled back to a build from last week it works fine with the same metadata collection.
-
@msheehan79 hm, do you have an example file? It's possible that something broke, but I couldn't reproduce the issue yet with my test files.
-
@fluffypillow sure thing. Just did a retest tonight to make sure and something definitely changed.
My setup is Win x64 and I use the metadata files in the pegasus/configs/metafiles directory. I reconfirmed tonight with just 1 metadata file (attached) in the folder.
When I used an older build it works as expected:
With no other change but updating to yesterday's build:
The metadata file contents: (ports-wolf3d.metadata.txt)
collection: Ports shortname: ports extensions: wl6, sod launch: "..\..\..\launch\Ports-Wolf3D.cmd" "{file.path}" "ecwolf" "ports\wolf3d\ecwolf.cfg" "" "" directory: ..\..\..\roms\ports\wolf3d x-shortname: ports-wolf3d ignore-file: sod/AUDIOT.SOD ignore-file: sod/GAMEMAPS.SOD ignore-file: sod/MAPHEAD.SOD ignore-file: sod/VGADICT.SOD ignore-file: sod/VGAGRAPH.SOD ignore-file: sod/VGAHEAD.SOD ignore-file: sod/VSWAP.SOD ignore-file: wolf3d/AUDIOT.WL6 ignore-file: wolf3d/GAMEMAPS.WL6 ignore-file: wolf3d/MAPHEAD.WL6 ignore-file: wolf3d/VGADICT.WL6 ignore-file: wolf3d/VGAGRAPH.WL6 ignore-file: wolf3d/VGAHEAD.WL6 ignore-file: wolf3d/VSWAP.WL6 game: Wolfenstein 3D file: ..\..\..\roms\ports\wolf3d\wolf3d/AUDIOHED.WL6 release: 1992 developer: id Software publisher: Apogee genre: Shooter players: 1 description: Wolfenstein 3D is an episodic first-person shooter and a follow-up to the top-down infiltration game Castle Wolfenstein. The game puts the player in the boots of B.J. Blazkowicz, an allied spy. There are six episodes: the first distributed complete as shareware; the second and the third available after registration; and the three final missions (which happen before the events of the first episode) available in the Nocturnal Missions pack. launch: "..\..\..\launch\Ports-Wolf3D.cmd" "{file.path}" "ecwolf" "ports\wolf3d\ecwolf.cfg" "" "" game: Wolfenstein 3D: Spear of Destiny file: ..\..\..\roms\ports\wolf3d\sod/AUDIOHED.SOD release: 1992 developer: id Software publisher: FormGen genre: Shooter players: 1 description: It's World War II and you are B.J. Blazkowicz, the Allies' most valuable agent. In the midst of the German Blitzkrieg, the Spear that pierced the side of Christ is taken from Versailles by the Nazis and secured in the impregnable Castle Wolfenstein. According to legend, no man can be defeated when he has the Spear. Hitler believes himself to be invincible with the power of the Spear as his brutal army sweeps across Europe. launch: "..\..\..\launch\Ports-Wolf3D.cmd" "{file.path}" "ecwolf" "ports\wolf3d\ecwolf-sod.cfg" "" ""
-
@msheehan79 Thanks! I've found the issue, it should work now.
-
@fluffypillow I ran pegasus from ssh so I can see what's going on when it's loading. This is the first line. Not sure if it's related to the problem:
Setting framebuffer size is only available with DRM atomic API
Loading any game does indeed give this message endlessly[e] Could not queue DRM page flip on screen HDMI1 (Device or resource busy)
The pi4 does have two hdmi ports now, hdmi0 and hdmi1. I'm using hdmi0. No change if using hdmi1. -
@Darksavior Yes, the DRM errors likely come together, apparently some video buffers ("resources") are not released/acquired properly which causes such errors. I've found some possible workarounds, but I couldn't get to try them yet. For example, I've found a report that said
export QT_QPA_EGLFS_ALWAYS_SET_MODE=1
before running Pegasus might solve this; if you have some time could you try this? -
@fluffypillow Yea just post the builds, I'll try test them out. I'll check back often and test asap.
I tried that command. No change. Maybe I'm not running it right? I execute the command you posted then I typepegasus-fe
-
@Darksavior It works! Just got back to my Pi 4, and after some more searching I've found a variable that fixed the issue for me. Try this before launching Pegasus:
export QT_QPA_EGLFS_KMS_ATOMIC=1
On the other hand, this produces a "Framebuffer size format is invalid" warning, but that seems to have no visible effect for me.
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.