ISA sound card emulation on the Raspberry Pi Pico's RP2040 microcontroller. PicoGUS can emulate:
- Gravis Ultrasound (GUS) - the primary focus of PicoGUS, hence the name
- Sound Blaster 2.0 / AdLib (OPL2)
- MPU-401 (with intelligent mode) - outputs MIDI data on 3.5mm MIDI TRS connector
- Tandy 3-voice
- CMS/Game Blaster
- Game port joystick
Current status: perpetual beta! See the main wiki page for current status and the compatibility list for support status of various DOS programs and other system compatibility notes. This project has a heavy demoscene focus due to the GUS's history so that's what I've concentrated on, but GUS support in games is very good to excellent.
Want to buy a PicoGUS? Fully assembled PicoGUS 2.0 sound cards are available from these sources, all of whom ship worldwide:
- Joe's Computer Museum Shop - in US 🇺🇸
- Serdashop - in EU 🇪🇺
- Flamelily IT - in UK 🇬🇧
Want to make your own PicoGUS? See the build guide. Note that the more DIY friendly v1.1.1 hardware has some documented issues with reset – a forthcoming v1.2 revision will fix these issues. Important caveat: due to the specs of the Pico, assumptions made by programs written to use the GUS, the imprecise nature of emulation, and the varying specs of retro DOS PC hardware, some things will likely never be perfect. This is still a work in progress.
Have a PicoGUS and want to use it? See the configuring and using your PicoGUS guide.
Want to support PicoGUS? I have a limited number of machines to test PicoGUS in and donating either money or motherboards would be greatly appreciated and help increase the compatibility of PicoGUS.
You can donate via PayPal or Ko-Fi:
See/hear PicoGUS in action on YouTube:
Videos by others:
My videos:
- Raspberry Pi Pico C/C++ SDK
pico_audio_i2s
from pico-extrasstdio_async_uart
from PicoCart64gus-x.cpp
adapted from DOSBox-X- OPL/AdLib emulation from rp2040-doom (based on emu8950)
- MPU-401 emulation adapted from HardMPU and DOSBox-X
- Tandy 3-voice emulation based on code contributed by Aaron Giles, adapted from DREAMM
- CMS emulation based on code contributed by Aaron Giles, adapted from DREAMM
- USB joystick support uses TinyUSB and tusb_xinput
The hardware portions of this repository (hw/ directory) are licensed under the CERN OHL version 2, permissive.
The software portions of this repository (sw/, pgusinit/ directories) as a collection are licensed under the GNU GPL version 2. Some files are individually dual-licensed under BSD or MIT licenses – see the license in the file headers for details.