Giter VIP home page Giter VIP logo

mmatyas / pegasus-frontend Goto Github PK

View Code? Open in Web Editor NEW
1.1K 42.0 99.0 202.03 MB

A cross platform, customizable graphical frontend for launching emulators and managing your game collection.

Home Page: http://pegasus-frontend.org

License: Other

QMake 2.54% C++ 72.64% QML 17.48% C 0.70% Java 3.25% Shell 0.69% JavaScript 0.10% CMake 2.60%
emulator frontend cross-platform raspberry-pi retrogaming qml games customizable hacktoberfest qt5

pegasus-frontend's People

Contributors

blood-pirouette avatar gregflynn avatar imperador avatar j8r avatar jeffersonbledsoe avatar mmatyas avatar nicjansma avatar polson avatar spydercoder avatar waldnercharles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pegasus-frontend's Issues

Add external script support

On certain events, the program should iterate over a related config directory and execute scripts found there, in alphabetic order.

  • reboot scripts
  • shutdown scripts
  • config change scripts
    • separate controls/platforms/program settings?

Add system information support

The UI should have access to some basic system information, like OS, CPU cores, RAM, and also dynamic information, like the amount of free memory, CPU load or temperature.

Generate deployment packages

  • Create a simple TAR package for Linux
    • (fails for the same reason, as it also uses the same tool)
    • fixed by static builds
  • Create a simple ZIP package for Windows
  • Add AppImage support
    • previously: outdated Travis, Docker complications, missing libs: too much hacking. Works offline though. I'll build Qt on older Ubuntu next time
    • I'd need to bundle GStreamer, is that okay?
  • Snap support
    • there are some Qt parts for Snapcraft, but a lot missing; would require building Qt from scratch
    • system access problems, as listed below
  • Flatpak support
    • it seems I'd need to depend on the whole KDE runtime to get it work
    • maybe I can avoid it with static builds
    • TODO test

Emulator crashes soon after I launch it with Pegasus

I finally managed to get Pegasus running on my Amlogic S905 device, and I am super excited for this FE is amazingly fast and it looks very cool already!

however I seem to be having a problem when I launch an emulator, it crashes after about 1 minute inside, here are some examples, one launching Advmame and the second launching Retroarch.

Executing command: `/usr/bin/advmame.sh /storage/roms/mame-advmame/dbreed.zip`
Process 3098 started
The external program `/usr/bin/advmame.sh` has crashed
The external program has crashed on exit, with exit code 15
Executing command: `/usr/bin/retroarch -L /tmp/cores/snes9x2010_libretro.so "/storage/roms/snes/2020 Super Baseball (USA).zip"`
Process 3003 started
QProcess: Destroyed while process ("/usr/bin/retroarch") is still running.
The external program `/usr/bin/retroarch` has crashed
The external program has crashed on exit, with exit code 9

I understand this is in alpha but I am jut letting you so you can be aware.
not sure if there is some sort of debugging log I can provide to help with this.

Write changes to ES2 files

When the game data changes (favorite, play count, ...), the gamelist file should be updated. This should be done keeping plugins in mind. If there are unsupported tags and properties, it should retain them.


Previous issue text:

# Increase play count when a game ends

The play count field should be increased in the config files after a game ends.
This involves (re-)writing the config file.

Wii U, Wii, DS, and 3DS Support

This looks like an awesome project, although very wip (no idea how to add emulators or games, my steam games were auto detected but I couldn't seem to launch them, and holding down the enter button on a game makes tons of instances of this program). However im sure that will all be fixed eventually, and so I just wanted to let you know that themes for the platforms I listed in the title would be great. Keep up the good work!

Libraries with mixed portrait/landscape boxarts looks messy

In particular with SNES games; European games are in landscape and Japanese games are in portrait.

It would be nice if Pegasus recognized aspect ratio and fixed the height of the portrait boxes.
Another solution could be to rotate the portrait boxarts to make them landscaped.

Minimum required Gstreamer plugins to show videos?

I tried to look for this on the wiki but I could not find it, right now when I compile QT+Pegasus it takes about (I think) 200mb in total, which is a bit too much for a FE on an embedded system, so I've been trying to reduce it to the bare minimum, I already skip a lot of QT modules that are not needed.

-skip qtxmlpatterns -skip qtx11extras -skip qtwinextras -skip qtspeech -skip qtdatavis3d -skip qtcharts -skip qtandroidextras -skip qt3d -skip qtlocation -skip qtmacextras -skip qtdoc -skip qtdatavis3d -skip qtpurchasing -skip qtnetworkauth -skip qtscript -skip qtwebengine -skip qtwebview"

The problem seems to be that I also need the gst-plugins-base, gst-libav and gst-plugins-good for Gstreamer to be able to show videos, so I assume that is what is taking most of the space, but how do I know which plugins to delete as to not affect Pegasus?

if I don't use the plugins Pegasus runs but it doesn't show videos (at least not the mp4 videos I have).

Another solution, which I am not sure if its possible with QT, would be to use FFMPEG (or VLC) to show the videos, like ES does it. FFMPEG is used a lot on my system so it would not require more space.

Improve error reporting

On errors,

  • Pegasus should show the error message on the screen
  • Pegasus should save it to a log file

Add Support for Playstation Controllers with xboxdrv

Playstation controllers are not natively supported by Qt but can work with xboxdrv to emulate a Xbox 360 controller.

The command suggested in the Qt Gamepad documentation is

sudo xboxdrv --detach-kernel-driver --mimic-xpad -s

A wired PS3 controller works in the Pegasus frontend with this command but it's not available in emulators. Running cat /proc/bus/input/devices, the virtual Xbox 360 pad appears as js0 with no assignment for the PS3 controller.

I can add a flag --evdev /dev/input/by-id/usb-Sony_PLAYSTATION_R_3_Controller-event-joystick but the PS3 controller does not work in Pegasus. It works fine once a rom is launched. This is because the PS3 controller is assigned js0 and the virtual Xbox 360 pad js1.

I do have a solution working using Linux Joystick Mapper.

Add Steam support

Haven't checked the API docs yet, but in general Pegasus should be able to

  • Query the list of installed games
  • Get the metadata of the installed games
  • Get the installed static assets of the games (logo, background)
  • Get the assets available on the store too (video, screenshots)
  • Make sure games can be launched properly
  • Optimize
  • Improve look and feel

Create better QML components

Some QML components have annoying limitations. For example, grids:

  • Grid has dynamic col/row resizing, but has no scrolling or current item highlight support
  • GridView has highlight and scrolling, but has no auto content resize
  • GridLayout has a different kind of auto resize, but no highlight or scrolling

It'd be nice to provide some easy to use utility components, instead of asking themers to hack their layout.

MacOS Build successful - what next?

Hi, I followed your instructions and succeeded in MacOS to build the executable into /opt/pegasus-frontend -> there I have the following directory structure

  • assets
  • doc
  • etc
    Makefile
  • src (including the executable pegasus-fe)
  • tests
    I can start pegasus-fe, but it is empty since obviously all other files that the frontend probably expects from the raspberry pi implementation are missing. What would be the next steps from there? I have a current retropie environment running on my rpi3.
    Many thanks.

Small tasks and improvements

I'm collecting some smaller task here, that are not bugs, new features, or may not have a serious impact on the program, but nevertheless I don't want to forget doing them. It's kind of a todo list.

  • Create a global color scheme file
  • Draw a better gamepad config image
    • Don't draw every button separately, it's a pain setting them up
  • Update Coverity, now that Qt 5.9 is out
  • Recheck #15 now that Qt 5.9 is out

Implement custom rom directory list

The list of rom directories that are checked for a metadata file should be manageable on a settings screen and save to a config file (ie. under ~/.config). If there are ES2 system config, this list can be initially filled with that.

  • initial backend implementation
  • UI side

Add ability to page / jump to letter

I tried out the latest automated build for rpi3 and cam across a missing usability features that would make nice enhancements.

If you have a large list of games, it takes quite a while to scroll through the list. It appears R2/L2 are mapped to switch between systems. It would be nice to use L1/R1 for paging up/down in the game list view like it does in emulation station.

Also it would be nice to have similar functionality in emulation station where you can jump to a letter.

Finally, it would be nice if when you exited a game that you would be back to the system with the game you were playing highlighted. Currently if you are playing a game that begins with a Z and exit, you will be all the way back at the top of the game list when the front end returns.

Scraped images and description not showing

As stated by Fluffypillow at RetroPie Forum I'm opening this issue, as I cannot get images and description to show, even though they do in ES.

RetroPie v. 4.3, RPi Model 3B. Pegasus Alpha4-1 (2017-04-10)
Here's what I did:
Where my Gameboy Advance gamelist is located
Desc, image and marquee references in the Gamelist
Controlled that the filenames and location matches
How it looks in Pegasus
How it looks in ES

I'm sorry if I'm wasting your time here, I just cannot seem to find out why it works in ES and not in Pegasus.

Improve loading time

Especially when the files are stored on USB, loading might be slow even for 2-3000 games.

Add scraper plugin support

"Ideally, I'd expect a scraper plugin to work and communicate with the frontend asynchronously, using a well defined API for reporting the current state and progress, or to allow cancelling the scraping. This would allow me to create a nice progress bar / scraping progress interface, or send the scraping it to the background while the user can continue playing, etc.

This would probably require significant changes in most scrapers, so I'd also add a regular "start this program and wait for it to end" kind of launching too."

When exiting emulator tab defaults to left most

If you have say 3 consoles and you are on any tab but the first:

  • Start a game
  • Exit Game
  • You will now see all the games of the system you were on, but the tab that is selected is the left most tab, rather than the actual system you should be on.

Pegasus doesn't even start

I just downloaded the alpha2, and it doesn't even start. I get permission denied errors every time, even when trying to run as root.

image

Add custom config files

Pegasus should not depend on ES2. Ideally, the format should be a plain, INI-style config file, or something like the Debian control file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.