A dynamic digital marquee for Recalbox
dynquee (pronounced 'dinky') is a program to run a dynamic marquee for Recalbox. The name stands for dynamic marquee.
It was originally intended to run on a Raspberry Pi 4B with two displays, Recalbox using the primary display for games and dynquee driving a second display for the marquee, similar to the PiMarquee2 project for Retropie. But it can also run on Recalbox on PC, and on a separate device communicating with Recalbox via the network.
Click on the image below for a short demo of dynquee in use:
I'm building a bartop arcade machine and I want to have a dynamic marquee which can change depending on which game system is selected and which game is being played.
I'm using Recalbox to run the machine on a Raspberry Pi 4. As the Pi4 has dual HDMI outputs I want to drive the marquee from the second HDMI output.
The marquee display I have is an ultrawide 19" 1920x360 LED panel which is the ideal size for my build. It was quite expensive and hard to obtain; another possiblity would be a cheaper 14.9" TN panel available from Amazon or ebay.
For testing I used a spare 19" TV running at 720p resolution.
This project is the result of my attempts to get a dynamic marquee working with Recalbox.
I wanted a solution which would be:
- fairly lightweight: work with Recalbox's environment, ideally needing no extra software to be installed
- flexible: allow most settings to be changed via a config file
- reactive: change the marquee in response to user actions
It works very like Recalbox's built-in mini TFT support: it listens to Recalbox's MQTT broker for events, and displays still images or videos in response to those events.
On PC it uses mpv
to display media on the secondary screen.
On Raspberry Pi it writes media files direct to the framebuffer using fbv2
for still images and ffmpeg
for videos.
With the Pi4's default KMS graphics driver both HDMI displays share a single framebuffer, so marquee images are also visible on the primary display for a second or two when an emulator launches or exits. While this is a bit annoying, it doesn't seem to break anything so I put up with it.
dynquee is written in Python 3 with a few supporting bash scripts.
- Recalbox v8.1.1 Electron or later
- one of:
I have tested dynquee running on a different device on the same network as the Recalbox machine. It works fine but needs a few config file changes: see Running dynquee on a different device.
dynquee is now pretty stable but there may still be bugs.
I've tried to minimise the risk of displaying the same image for a long period of time because I'm concerned about image persistence or burn-in (probably a habit I picked up in the 1980s). While this shouldn't be too much of a problem if you're using a modern LCD display for your marquee, I still recommend keeping an eye on it.
dynquee has been tested on the following platforms:
-
Running on Recalbox:
- Recalbox v9.1, v9.0, v8.1.1 on Raspberry Pi 4B: working
- Recalbox v9.1, v9.0.1 on PC: working
-
Running on a separate device:
- Raspberry Pi Zero W: working
- Raspberry Pi 1B: working, but too slow to be useable
-
To get dynquee running on Recalbox follow the instructions below.
-
To get dynquee running on a different machine see installing on a different device.
Releases include a few media files to get started (see acknowledgements) but not a complete set. See the media README for suggestions of where to find media files.
Follow these steps to install dynquee using the install script:
- Connect to your recalbox with
ssh
(the Recalbox wiki explains how) - Copy and paste this command and press enter:
bash -c "$(wget -qO - https://github.com/poppadum/dynquee/raw/main/install/install.sh)"
- If all goes well you should see the Installation complete message
If you prefer to install everything manually, follow this guide for Raspberry Pi or this guide for PC.
Most settings can be configured in the config file dynquee.ini
.
Read the comments in that file and read the configuration guide for full details.
If things aren't working, first check the log files in the logs/
directory:
logs/dynquee.log
contains the summary loglogs/dynquee.debug.log
contains the full debug log
The logs should provide some clues as to what is wrong.
If you are having trouble getting dynquee to start on PC, also check the file /tmp/dynquee_start.log
.
If you still can't get it working, post on the Recalbox forum or message me on Discord and I will try to help. Please paste your config file and debug log file on pastebin and provide a link when reporting issues.
Bug reports/fixes, improvements, documentation, & translations are welcome.
WaitableEvent
class written by Radek Lát is used to wait for several events simultaneously.
For convenience, releases include some starter images collected from various sources. Most of these are not my work: credit remains with the original authors. See the artwork README file for sources.
Many thanks to @toniosj for Recalbox PC testing.
- Genre matching is very dumb: make it more useful.
Is there a master list of genres that Emulation Station uses somewhere?
This project is released under the MIT Licence.