summaryrefslogtreecommitdiff
path: root/_posts/en/2025-06-22-pegasus_setup_groovyarcade.md
diff options
context:
space:
mode:
Diffstat (limited to '_posts/en/2025-06-22-pegasus_setup_groovyarcade.md')
-rw-r--r--_posts/en/2025-06-22-pegasus_setup_groovyarcade.md160
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!