Skip to content
TheGlengineerPublic
forked from mrneo240/openmenu

About

A modern dashboard menu for the Sega Dreamcast and GDEMU, with paired SD card manager.

Topics

Resources

Contributing

Stars

40 stars

Watchers

2 watching

Forks

 
 

Repository files navigation

Note

2.16.0 was tested on my own Dreamcast: a Retro PSU, GDEMU firmware 5.20.5, a stock Sega VMU and a VMU Pro, a VGA cable to a monitor, and a 64 GB card that came from the openMenu Virtual Folder Bundle with 52 discs. Everything else was proven in the emulator harness and the automated tests, not on a console. Read the known limits before you report something; if it is not there, use Report a problem in Card Manager (see Troubleshooting).

SWIRL

A modern dashboard menu for the Sega Dreamcast and GDEMU, and a Windows app (with macOS and Linux versions in beta) that sets up your SD card for it. In English, German, French, Spanish, Italian and Portuguese.

Latest release Build License: BSD 3-Clause Built on openMenu

Buy Me a Coffee

SWIRL home screen on a Dreamcast

SWIRL replaces the list of files you normally see when a GDEMU equipped Dreamcast boots. You get big box art, smooth 60 fps motion, collections, play history, screenshots, menu music, a live VMU and screen savers. It is built on openMenu, so it keeps the same SD card layout and the same art databases. Nothing about your games has to change.

SWIRL Card Manager is the companion app for Windows, also in beta for macOS and Linux. It puts SWIRL on the card, adds games (including straight from .zip, .7z and .rar), fixes their names, fetches art, backs the card up and keeps everything up to date.

Note

SWIRL does not include any games. Use backups of discs you own.

Contents

Highlights

On the Dreamcast

  • Home, Library, Collections and System tabs with animated, anti aliased 24 bit graphics at 60 fps
  • Box art that loads sharp, with smooth cross fades and a cover coloured backdrop
  • Collections built from your library: favorites, recently played, most played, party games, every genre, plus your own
  • Game pages with description, screenshots, VMU preview, play count and a disc picker for multi disc games
  • Every game boots region free and in VGA, with per game launch options (region, video, boot screens)
  • Games start about seven seconds sooner than in 2.13, with the boot animation and SEGA screen
  • Menu music with a built in theme, navigation sounds, rumble and VMU pictures
  • Five animated screen savers, including a simple dim overlay
  • Favorites, history and settings saved to your VMU, as two copies, so a card pulled mid save loses nothing; copy them to another VMU from System > VMU saves
  • A VM2 or VMU Pro switches to each game's own memory card when the game starts, and SWIRL keeps a card of its own on it
  • Diagnostics: the warnings since power on in plain words, and the whole report as QR codes for a bug report
  • Menus in English, German, French, Spanish, Italian or Portuguese, following the console's own language setting or your choice
  • Classic openMenu list, grid and GDMENU styles still one setting away

In SWIRL Card Manager (Windows, with macOS and Linux in beta)

  • One exe on Windows, one app on the Mac (Apple Silicon and Intel) and one static Linux binary, with nothing else to install; it installs itself and removes itself cleanly
  • Add games from folders, disc images or archives (.zip, .7z, .rar, including multi part), unpacked straight onto the card
  • Duplicate detection, proper game names from the Redump list and automatic grouping of multi disc games
  • List or cover grid view, drag to reorder, and an Edit window for names, art, VMU screens, screenshots and details
  • Art and info from the openMenu databases, screenshots from libretro thumbnails, and VMU screens captured by booting each game in an emulator
  • VGA patches for the few games that have no VGA mode (Hydro Thunder is one), applied in place with an undo
  • Your own menu music and VMU logo, collections, GDEMU settings and a card health check
  • New card from scratch (formats the card for GDEMU and fills it), full card backups to your PC, and restore
  • The menu that was on the card before SWIRL is kept, so going back to openMenu or GDMENU is always one click
  • Report a problem: paste the QR codes from the Dreamcast, or drop photos, and get a ready to paste GitHub issue
  • The whole window in English, German, French, Spanish, Italian or Portuguese
  • Checks GitHub for new versions and updates itself

Screenshots

On the Dreamcast

Home Library
Home Library
Game page Launch options
Game page Launch options
Collections System settings
Collections System settings
Diagnostics
Diagnostics

Screen savers

SWIRL Card Manager

Games in the cover grid

Games list Edit a game
Games list Edit a game
Add games (archives supported) New card from scratch
Add games New card
Look and sound Backups
Look and sound Backups
Report a problem Card health check
Report a problem Card health check

More screens are in the Card Manager guide.

Languages

SWIRL and Card Manager speak English, German, French, Spanish, Italian and Portuguese.

SWIRL in German and Italian

On the Dreamcast. Out of the box SWIRL follows the language set in the console's own settings screen (Console setting); a Dreamcast set to Japanese, or to a language SWIRL does not have, shows English. To pick one yourself: open System, go down to Language, and press left or right until the language you want shows. It applies at once and is saved to your VMU with the rest of your settings. Game names and descriptions stay as they are on the card. The translations travel on the card, so a card last written by an older Card Manager offers them only after you run Update SWIRL once.

In Card Manager. Open About (the last entry in the list on the left, or F1) and pick a language from Language at the top right. Same as the system follows the language of your PC or Mac. The window opens again in the new language. The build log, the card warnings and the Dreamcast report stay in English, since they go into bug reports.

Card Manager in French

The translations have been checked by machine for completeness, not yet by native speakers. If a line reads wrong, the strings are plain text files: swirl/lang/<code>.json for the menu and swirl/cardmanager/web/lang/<code>.json for the window. Corrections are welcome as a pull request or an issue.

Quick start

You need a Dreamcast with a GDEMU (original or clone), its SD card, and a Windows 10 or 11 PC, a Mac (macOS 10.15 Catalina or newer, Apple Silicon or Intel; beta) or an x86-64 Linux desktop (beta).

  1. From the latest release, download SWIRL-Card-Manager.exe for Windows, SWIRL-Card-Manager-macOS.dmg for a Mac (beta), or SWIRL-Card-Manager-linux-x86_64.AppImage for Linux (beta; make it executable and run it, or use the plain gzipped binary that is also attached).
  2. Run it. The app is not code signed, so the first time:
    • Windows may say "Windows protected your PC". Click More info, then Run anyway.
    • macOS says it cannot check the app. Open the disk image, drag the app to Applications and open it, then go to System Settings > Privacy & Security and click Open Anyway. See Getting started.
    • Linux asks for your password when you format a card (writing the raw disk needs root). See Getting started.
  3. Put the SD card in your PC and pick it at the top of the window.
  4. If the card already has games (for example from GDMENUCardManager), click Update SWIRL. Only folder 01, the menu, is rebuilt. Your game folders are not touched, and the old menu is kept in SWIRL_BACKUP on the card.
  5. For an empty card, use New card from scratch or Games > Add games.
  6. Put the card back in the GDEMU and switch the Dreamcast on.

The full walk through, including installing the app on your PC, is in Getting started.

Controls

Button What it does
L / R Switch tabs
D-Pad Browse
A Play (Home) or open
X Game page (Home), change sort (Library), launch options (game page)
Y Favorite
B Back
Start Opens System
Down on Home Surprise me: picks a random game
Keyboard Type in the Library to jump to a game
A + B + X + Y + Start in a game Back to SWIRL, from games that route the reset through the BIOS (most Sega titles). Games that reset to their own title screen never reach SWIRL

See Using SWIRL for every screen and setting.

How it works with your SD card

SWIRL keeps the GDEMU layout that GDMENUCardManager and openMenu use:

SD card
├── 01/                 the menu disc (SWIRL lives here)
├── 02/, 03/, ...       one folder per game disc, unchanged
├── GDEMU.INI           GDEMU settings
├── SWIRL/              your edits: names, art, collections, carried openMenu keys, the VFB import marker (Card Manager)
└── SWIRL_BACKUP/       previous menus with their manifests, removed games, VGA patch undo files

The menu disc holds OPENMENU.INI and the same BOX.DAT, ICON.DAT and META.DAT art files as openMenu, plus a few optional files that SWIRL adds (screenshots, VMU screens, music, collections). Details are in SD card layout.

Documentation

Guide For
Getting started Installing, your first card, updating
Using SWIRL The menu on the Dreamcast: screens, controls, settings
SWIRL Card Manager Every page of the app on Windows, Mac and Linux
SD card layout Which files live where, and which are optional
Troubleshooting Common problems and fixes
Diagnostics The report SWIRL draws as QR codes: reasons, warning codes, format
Building from source Toolchain, building the menu and the app, tests
Releasing Versions, GitHub releases and the in app updater
Contributing How to help, forks and pull requests
Changelog What changed in each version

Building from source

The short version, on Linux or WSL2 (Ubuntu 22.04):

swirl/setup_toolchain.sh              # GCC 15.1 + KallistiOS 2.2.1 into ~/dreamcast
swirl/build.sh                        # builds swirl/build/gdemu/1ST_READ.BIN

cd swirl/cardmanager                  # Go 1.24 or newer
cp ../build/gdemu/1ST_READ.BIN assets/1ST_READ.BIN
go test ./...
GOOS=windows GOARCH=amd64 go build -ldflags "-H windowsgui -s -w" -o SWIRL-Card-Manager.exe .
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -o SWIRL-Card-Manager .
linux/make_appimage.sh 2.14.1       # on Linux: builds the .AppImage (needs appimagetool)
macos/make_app.sh 2.14.1            # on a Mac: builds SWIRL Card Manager.app and the .dmg

The Card Manager builds on its own too: a current menu build is already in swirl/cardmanager/assets, and all Go dependencies are vendored. See Building from source.

Project layout

.                       openMenu, with SWIRL added as a new UI mode
├── ui/ui_swirl.c       the SWIRL dashboard
├── ui/swirl/           SWIRL graphics, audio, library, VMU and fonts
├── backend/            game list, launching (GDMENU and CodeBreaker loaders)
├── swirl/cardmanager/  SWIRL Card Manager (Go, web UI in web/index.html)
├── swirl/vmucap/       Flycast patch for VMU screen capture (GPL 2.0)
├── swirl/tools/        logo, font generator, test library, image tools
└── docs/               guides and screenshots

Credits

SWIRL and SWIRL Card Manager are made by Glen Huszar (@TheGlengineer).

They stand on the work of:

Contributors, through pull requests on this repository:

  • jkoehler11: the Linux port of SWIRL Card Manager, static binary and AppImage, tested on real hardware (#11)
  • sergiosaint: the bounded helper that builds the Classic styles' padded info lines (#10)

Support SWIRL

SWIRL is free and always will be. If it brings your Dreamcast back to life and you would like to say thanks, you can buy me a coffee. It is entirely optional and does not unlock anything.

The SWIRL logo

The SWIRL mark is three tapered strokes turning around a hub, in the menu's orange: a nod to the swirl of the Dreamcast era, drawn from scratch for this project. It is generated by swirl/tools/make_logo.py, which also writes the app icon and the VMU logo. The files are in docs/images/logo.

License

SWIRL and SWIRL Card Manager are released under the BSD 3-Clause license, the same license as openMenu. The VMU capture tool in swirl/vmucap is GPL 2.0 because it is based on Flycast. Other included parts keep their own licenses, listed in THIRD_PARTY_NOTICES.md.

Sega and Dreamcast are trademarks of SEGA Corporation. This is an independent fan project, not affiliated with SEGA or with the maker of GDEMU.

About

A modern dashboard menu for the Sega Dreamcast and GDEMU, with paired SD card manager.

Topics

Resources

Contributing

Stars

40 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages