Announcing Pegasus Frontend
InsecureSpike last edited by
wow, looking awesome!
teknomusik last edited by
Any chance this front end could have a menu for loading / previewing save states similar to the NES Classic menu?
nes classic menu
@teknomusik well that depends on the emulators; if the frontend can read the states, displaying them is not a problem. Most emulators use their own save state formats, so we'd either need some common file format, some information about the individual saves, or some kind of plugin system for the individual emulators/formats.
This week's progress:
- improved screen resolution / aspect ratio support
- added different box size support
- added basic gamepad support
- improved game list loading speed by about 30%
- some style changes
- polished the source code, made the project structure cleaner, internal changes
fluffypillow last edited by fluffypillow
lilbud last edited by
@fluffypillow Is there a limit on systems you can add?
@lilbud yes, 2147483647 ( ͡° ͜ʖ ͡°)
As for the "system bar" on the top of the current theme, it loops like the carousel, and shows as many as it can while the name of the platforms remains visible.
This week Pegasus got open sourced, and is available here. There are no proper releases yet, since it's still in alpha, but you can already build it from source. Automatic build testing has been set up for desktop Linux, Pi1, Pi2 and Windows. It is also confirmed working on Windows 10.
mattrixk last edited by
@fluffypillow You're doing some great work mate. I'd love to try this out for windows, but have no idea how to get it from your github to a usable program on my PC.
meleu last edited by
@fluffypillow can you be more specific about the dependencies on the README? I mean, which debian packages do I have to install to build the pegasus-frontend?
meleu last edited by
@fluffypillow Well, I kinda figured out the dependencies. I'm trying first on my Linux Mint x86. I installed
qtbase5-devand it brought a lot of other packages.
And then I've got this:
$ make cd src/ && ( test -e Makefile || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/meleu/src/pegasus-frontend/src/src.pro INSTALLDIR=/opt/retropie/supplementary/pegasus-frontend/ -o Makefile ) && make -f Makefile make: Entrando no diretório `/home/meleu/src/pegasus-frontend/src' cd backend/ && ( test -e Makefile || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/meleu/src/pegasus-frontend/src/backend/backend.pro INSTALLDIR=/opt/retropie/supplementary/pegasus-frontend/ -o Makefile ) && make -f Makefile make: Entrando no diretório `/home/meleu/src/pegasus-frontend/src/backend' g++ -c -m64 -pipe -O2 -fPIC -fno-exceptions -Wall -W -std=c++0x -D_REENTRANT -DQT_DEPRECATED_WARNINGS -DQT_RESTRICTED_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -o Api.o Api.cpp Api.cpp: In member function ‘void ApiObject::onLoadingFinished()’: Api.cpp:54:11: error: ‘qInfo’ was not declared in this scope qInfo().noquote() << tr("Data files loaded in %1ms").arg(m_loading_time_ms); ^ make: ** [Api.o] Erro 1 make: Saindo do diretório `/home/meleu/src/pegasus-frontend/src/backend' make: ** [sub-backend-make_first] Erro 2 make: Saindo do diretório `/home/meleu/src/pegasus-frontend/src' make: ** [sub-src-make_first] Erro 2
It seems that we have some problem in
Yeah, the documentation is a bit lacking, I plan to add proper guides/wiki eventually.
The Qt version is important (and I've just added a version check to the project file for checking), especially on embedded systems due to the optimizations in the later releases. Unfortunately the Qt packages are outdated on all Debians (including
experimental), which is what you've just experienced too (
qInfowas added in Qt 5.5, two years ago). For desktop only (X11/Windows), you can download the official development kit from here, and I'm also providing my own Qt builds for and RPi 1/2 and X11, which I've uploaded to the GitHub releases tab (eg.
qt58-x11.tgz). These are used for build testing too, but they don't include the debug libs or Qt Creator (making them way smaller than the official release). If you want to use them, you have to extract them to
/opt, and use
Cross compilation to Pi is a somewhat more difficult topic, and I could (and probably will) write a whole post about it. In short, you can find the required tools on GitHub, extract them to
/opt, add the toolchains'
bindirectory to your
$PATHand use the
rpi2_hosttools. You can set up remote deployment in Qt Creator as well.
Also a few additional notes:
- Gamepad support improvements will be added in Qt 5.9; it's going to be released at the end of this month, and I'll increase the required Qt version then
- There's no main menu yet, that's what I'm going to work on this week
- Please note that Pegasus is less than 2 months old, and is still in alpha
- If you do manage to run it, bug reports and suggestions are welcome!
fluffypillow last edited by fluffypillow
Had some errands to do this week, so I worked mostly on the main menu only (demo: http://webmshare.com/play/Prq5q).
Shutdown and reboot works too, and running custom scripts before them will be supported in the future.
You can also navigate using the mouse.
@fluffypillow glorious :) well done
fabio78 last edited by
@fluffypillow Beautiful, clean, fantastic usability, all made even more impressive by the fact of it being a one man project. Well done, mate, I'll be watching this closely now.
Hex last edited by Hex
Built and Installed nicely. Question: artwork missing? Game lists are all scrapped properly in ES
@Hex the documentation is still work in progress, sorry about that! Right now the XML is used for the metadata only; instead of reading the files from a gamelist, for a given asset type Pegasus tries to find an image file that matches certain name patterns. For example, if your rom file is
Contra (U).nes, and you want a box front art, it will check (at the moment) the following directories:
[directory of the rom]/media/
for the following files:
and use the first one it finds as the box art. Similarly for the other assets too. If you can read the code, you can find the full list of the currently supported suffixes in
src/backend/Assets.cpp, but of course this is something I intend to document properly.
Hex last edited by
@fluffypillow Need any help with Pegasus? I am currently working on some features for ES so I am in good shape to contribute here too.
Also I would recommend putting the GitHub repo url in the first post. This prevents users from having to go fishing in the comments