diff options
author | HombreLaser <buran@silosneeded.com> | 2025-06-22 12:04:54 -0600 |
---|---|---|
committer | HombreLaser <buran@silosneeded.com> | 2025-06-22 12:04:54 -0600 |
commit | 2054efe4368d833a110236931cf5b4d60502fecb (patch) | |
tree | ce60dd18c96555aafb2a993e2cd58c921d865016 | |
parent | 9e89869173bc9abc976a898cbfa48d98a3bfdeb8 (diff) |
Groovyarcade pegasus post
-rw-r--r-- | _posts/en/2025-06-22-pegasus_setup_groovyarcade.md | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/_posts/en/2025-06-22-pegasus_setup_groovyarcade.md b/_posts/en/2025-06-22-pegasus_setup_groovyarcade.md new file mode 100644 index 0000000..32e40db --- /dev/null +++ b/_posts/en/2025-06-22-pegasus_setup_groovyarcade.md @@ -0,0 +1,160 @@ +--- +layout: post +title: How to setup the pegasus frontend in Groovyarcade +lang: en +date: 2025-06-21 +tag: ["Videogames", "Tutorials"] +--- + +[Groovyarcade](https://github.com/substring/os) is a Linux distribution for using your PC as a games station. It comes with batteries included so you can use +your system on a CRT display, which are famously finicky when you're trying to hook them up to a computer. + +Its installation is outside of the scope of this blog post, although I did consider writing about my experience during it. Suffice to say that... it's really easy. +You may or may not need a second monitor during the process, but just stick to the [recommended hardware](https://gitlab.com/groovyarcade/support/-/wikis/2-Pre-Requisites-and-Installation/2.1-Hardware-Suggestions-General). Or, if you're feeling adventurous, look for AMD cards on craigslist or facebook marketplace with analog output +(VGA or DVI-I). +I'm using an OEM HD8450, which is not listed in the hardware suggestions page, but it did work regardless. Groovyarcade even told me, after finishing installation, +that my GPU was ideal. How d'ya like that huh. + +Groovyarcade works seamlessly with both attract mode and retroarch; with retroarch specifically you can leverage its [CRT Switchres](https://docs.libretro.com/guides/crtswitchres/) feature to change modesets on the fly, depending on the game you're playing (for example, a 240p modeset for a NES game and a 480i one for a Dreamcast game). + +Suffice to say, this is one of the coziest gaming setups known to man. But it began to show its cracks when I wanted to play other things besides emulators. + +Let's say you want to play [crispy doom](https://github.com/fabiangreffrath/crispy-doom) and appreciate the crisp 480 resolution on your CRT TV, or maybe you want +to play [Melty Blood](https://lutris.net/games/melty-blood-actress-again-current-code/) via lutris. Well, you certainly can, (after installing everything of course), +but you'd have to click desktop on the menu (which requires a keyboard, I asked on the discord, it seems they can't make gamepads play nicely with the TUI menu +groovyarcade uses, so you'd usually boot directly to a "frontend", like retroarch or attract mode), burn your retinas with the image of a PC desktop in glorious 480i +resolution, and fight constantly with that small real estate so you can boot up your non-retroarch, non-mame games. + +Enter [pegasus](https://pegasus-frontend.org/). + +# What is pegasus? + +Pegasus is just a launcher for your games. That's it. What's interesting is that you can set it up as a frontend for groovyarcade. And that it can run any game, +as long as you configure it. In the case of retroarch, you'd have to configure [metadata collections](https://pegasus-frontend.org/docs/user-guide/meta-files/) so +pegasus can detect your games. In the case of lutris, it detects them automatically. + +# Installing pegasus on groovyarcade + +To install pegasus, simply head to the frontend setup inside the system configuration, present in groovyarcade's TUI menu. It'll ask you to install it if you haven't. +After that, you can set it up as your main frontend. + +# Configuring pegasus + +Yes, manually creating those metadata files seems like no fun. That's why we'll use [skyscraper](https://github.com/muldjord/skyscraper). Install the prerequisites +and run: + +```bash +$ cd +$ mkdir skysource +$ cd skysource +$ wget -q -O - https://raw.githubusercontent.com/muldjord/skyscraper/master/update_skyscraper.sh | bash +``` +<br> + +After installing it, go to the .skyscraper directory inside your home directory. We will edit two files: `artwork.xml` and `config.ini`. Paste this +into `config.ini`: + +```ini +; -------------------------------------------------------------------- +; Skyscraper by Lars Muldjord (https://github.com/Gemba/skyscraper) +; -------------------------------------------------------------------- + +[main] +frontend="pegasus" +inputFolder="/home/arcade/shared/roms" +videos="true" +symlink="true" + +[esgamelist] +cacheRefresh="true" +cacheScreenshots="false" +``` +<br> + +The input folder is groovyarcade specific, and, for what I know, universal, unless you changed the user's name from arcade to any other, in that case, modify +it to suit your user. + +And for `artwork.xml`: + +```xml +<?xml version="1.0" encoding="UTF-8"?> +<artwork> + <output type="screenshot" width="640"/> + <output type="cover" width="640" height="480"> + <layer resource="cover" height="480" align="center" valign="middle"> + <gamebox side="wheel" rotate="90"/> + </layer> + </output> + <output type="wheel" height="200"/> +</artwork> +``` +<br> + +The `side` attribute of gamebox corresponds to the filename of the artwork that skyscraper will download, don't confuse it with how it will be shown. + +That's all for installing and setting up skyscraper. + +# Running skyscraper to generate the pegasus metadata files + +For this, head to the directory skyscraper is installed (or, if it's in the path, change `./Skyscraper` for `Skyscraper`) and you will execute the following +for each of your systems: + +```bash +$ ./Skyscraper -s screenscraper -p $YOUR_SYSTEM +$ ./Skyscraper -p $YOUR_SYSTEM +``` +<br> + +I hacked a quick and dirty bash script to automate this, if you're interested: + +```bash +#!/bin/bash + +# Modify with your systems of choice. +# If you're not sure how it is named, check the name of its directory +# in ~/shared/roms +systems=(dreamcast mame mastersystem megadrive n64 naomi2 neogeo nes pcengine psx) +# Modify with the path you downloaded skyscraper to. Or if it's in the path, delete this and +# use Skyscraper instead. +skyscraper=/opt/skyscraper-3.17.3/Skyscraper + +for system in $systems; do + $skyscraper -s screenscraper -p $system + $skyscraper -p $system +done + +# Skyscraper will output everything to a RetroPie directory in your home folder, +# so let's just use rsync to copy that where it should really go. +rsync -av /home/arcade/RetroPie/ /home/arcade/shared/ +``` +<br> + +# Actually telling pegasus how to launch your games + +Here comes the boring part. In each of your rom directories there'll be a `metadata.pegasus.txt` file. Inside, it will have a line like this: + +``` +launch: something-other-than retroarch "{file.path}" +``` +<br> + +Well, for each and every `metadata.pegasus.txt` we'll have to modify this line to something like this: + +``` +launch: retroarch -L /home/arcade/.config/retroarch/cores/your-core-of-choice.so "{file.path}" +``` +<br> + +I did consider writing another hacky bash script but quickly realized I am not really good at that: the script should check the directory it's currently in +(for example, if it's scanning the dreamcast metadata file, it should know it's inside the dreamcast directory) and, according to user input +(perhaps a CLI argument) know with which core replace the launch command. Sounds easy but I'm not paying openAI for a subscription to generate sloppy scripts +so I realized it'd be faster for me to edit these files manually. If a bash guru is reading this, I accept suggestions. + +Anyways: you'll have to edit that launch line for every metadata file. If you don't know which core you'd like to use, you can check the [emugen wiki](https://emulation.gametechwiki.com/index.php/Main_Page). Every core, if you installed retroarch via groovyarcade and used advanced mode, should be installed in +`/home/arcade/.config/retroarch/cores`. For example,for dreamcast games, you'd like to use flycast, whose core file is called `flycast_libretro.so`. + +After this, launch pegasus, set up your source directories, and your collection should be ready. + +## Acknowledgements + +YouCanTouCan for their [pegasus tutorial](https://github.com/YouCanTouCan/pegasus-frontend-tutorial) on which this post is based. Thanks! |