Skip to content

Configuring and using your PicoGUS

Ian Scott edited this page Aug 21, 2024 · 19 revisions

Setting IRQ/DMA jumpers

Choose a free IRQ and DMA on your system. A single jumper sets the IRQ, and two jumpers are used to set the DMA. In the following image, the jumpers are set for IRQ 5 and DMA 1, which are typical for GUS emulation. If you are using DMA 1, both DMA jumpers marked "1" must be closed, and for DMA 3, both DMA jumpers marked "3" must be closed. NOTE: on PicoGUS v1.1.x and the PicoGUS Femto Edition ISA adapter, a DMA must be set for the card to work, even when emulating cards that do not use DMA. PicoGUS 1.2 and 2.0 can be used with no DMA jumpers set. This is handy for emulating cards like MPU-401 or Adlib that do not use DMA without needing to take up a precious DMA channel.

jumpers

Get the PicoGUS software

The software release archive available at https://github.com/polpo/picogus/releases/latest includes the PGUSINIT.EXE program which will detect and initialize the PicoGUS. If running it reports success, your PicoGUS is working! If you get a message like "ERROR: PicoGUS card using protocol 2, needs 3" that means your card doesn't have the latest firmware and should be upgraded by running pgusinit /flash picogus.uf2.

Run pgusinit /? to see options for the card's current mode, or pgusinit /?? | more to view options for all modes. The mode can be set with pgusinit's /mode x option, where x is the mode you want to use. Note that setting options on the card, including the selected mode, will revert back to the last saved setting between reboots unless you use the /save option to save the options to the card's flash.

Emulation modes

The PicoGUS can be used in several different emulation modes, switchable with the /mode option to pgusinit. Some features are only available in certain modes due to resource constraints.

feature →
mode ↓
GUS SB DSP OPL2 MPU-401 MPU-401 IRQ Tandy 3-voice CMS/Game Blaster serial mouse joystick
GUS mode
SB mode
AdLib mode
MPU mode
Tandy mode
CMS mode
USB mode

Gravis Ultrasound (GUS) mode

This is the most-developed emulation on the PicoGUS. It can be selected by running pgusinit /mode gus.

Install the GUS software and MIDI patches

Download the GUS v4.11 software installation .zip and extract to C:\ULTRASND on your DOS machine. Note: the setup program that comes with the GUS installation is not compatible with PicoGUS and shouldn't be run. Instead set the environment variables described below:

Set the ULTRASND and ULTRADIR environment variable

Set the ULTRASND environment variable by placing the following in your autoexec.bat or temporarily on the DOS prompt, where x is the GUS port, y the configured DMA, and z is the IRQ. Note that the DMA and IRQ numbers are repeated. The PicoGUS will be configured to run on the port specified in ULTRASND, but the DMA and IRQ must reflect what the jumper settings are.

SET ULTRASND=x,y,y,z,z

For example for the recommended settings settings of port 240, DMA 1, and IRQ 5, the setting would be:

SET ULTRASND=240,1,1,5,5

Set the ULTRADIR environment variable to the installation directory, which should be C:\ULTRASND.

SET ULTRADIR=C:\ULTRASND

Run pgusinit

On a real GUS, you'd run ULTRINIT.EXE to initialize the card. Some versions of ULTRINIT do run on the PicoGUS, but I strongly recommend using pgusinit instead. pgusinit will detect if your card's port setting matches your ULTRASND veriable. The card defaults to port 240, but if you need to use a different port, set it with the /gusport x option to pgusinit.

Run some GUS software!

Pick a program from the Compatibility list page to run to put your PicoGUS through its paces!

Sound Blaster mode

Sound Blaster 2.0 emulation mode can be selected with the /mode sb option in pgusinit. Most Sound Blaster and AdLib software will run. ADPCM is not supported, so Duke Nukem II will not have sampled audio without patching the game. Accuracy is not perfect, but is much better than SBOS... 😉

At the recommended settings for Sound Blaster of port 220, DMA 1, and IRQ 5, set the following BLASTER environment variable:

SET BLASTER=A220 I5 D1 T3

AdLib mode

AdLib works great in Sound Blaster mode, but there's also a standalone AdLib mode that can be selected with the /mode adlib pgusinit option. Serial mouse emulation is available in AdLib mode but not Sound Blaster mode due to IRQ limitations (see below).

MPU-401 mode

MPU-401 emulation mode can be selected with the /mode mpu pgusinit option. This mode fully emulates MPU-401 with intelligent mode and interrupts (titles on this list marked with a 1 need interrupts). If you do not need interrupts, a more basic MPU-401 emulation not supporting interrupts is in all other PicoGUS modes, enabling simultaneous MIDI output and sound effects. To disable MPU-401 emulation if it conflicts with another sound card in your system, use the /mpuport 0 option in pgusinit.

The MIDI output port uses the MIDI TRS "Type A" standard (note that the TRS cables that come with the Orpheus and PCMIDI cards from PCMIDI.eu are "Type B" and will not work on PicoGUS). Cables to the "Type A" standard have the following wiring:

midi-trs

PicoGUS 2.0 boards purchased from official sellers come with the adapter, but if you have another revision, the least expensive pre-made cable option in the US I've found is this cable on Sweetwater and is the cable I use. Sweetwater is a well-regarded musical instrument and equipment retailer, but be warned, their sales engineers are pretty enthusiastic...

Tandy mode

Tandy 3-Voice emulation mode is selected with the /mode tandy option for pgusinit.

This emulation is on port 2C0h by default, to avoid conflicts or masked IO on the default Tandy port of 0C0h in non-Tandy systems. This is the same alternate port that Matze79's "TNDY" card can use. Use the TNDY driver program to redirect port 0C0h to 2C0h. Also many games need to be patched to allow for Tandy sound on non-Tandy systems with CGA, EGA, or VGA graphics. Note that this mode has not received much optimization, so accuracy and compatibility can be improved. If you have a pre-AT system, the default Tandy port can be set with by using the /tandyport c0 option for pgusinit.

Serial mouse emulation is available in Tandy mode (see below).

CMS mode

CMS/Game Blaster emulation mode is selected with the /mode cms option for pgusinit.

This emulation is on port 220h by default. If that conflicts with an existing Sound Blaster compatible card in your system, the base port can be changed with the /cmsport x option for pgusinit.

Why not support CMS in Sound Blaster mode? There are no titles that support simultaneous CMS music and SB digital sound, and some older titles cannot detect CMS when an SB card is present.

Serial mouse emulation is available in CMS mode (see below).

USB mode

A special mode for supporting serial mouse and joystick emulation independent of any other sound card emulation modes.

Gameport Joystick

A USB joystick can be connected to the PicoGUS, which can emulate a gameport joystick. PicoGUS 2.0 has a USB-A port and joysticks can be directly connected. Earlier versions of PicoGUS need a powered USB OTG adapter or hub to connect the joystick to the Pico's micro USB-B port.

Currently Xbox 360-style Xinput and Sony DualShock 4 gamepads are supported. Support for more joysticks is planned. The left stick and d-pad and A/B or cross/circle buttons are mapped to the first gameport joystick, and the right stick and X/Y or square/triangle buttons are mapped to the second gameport joystick.

Joystick emulation is disabled by default, and can be enabled by passing /joy 1 to pgusinit.

Serial Mouse

Any standard USB mouse can be plugged into the PicoGUS, emulating a serial mouse. This emulation has a configurable report rate defaulting to 60Hz so the emulated serial mouse is much smoother and more responsive than a real serial mouse. It also supports configurable sensitivity and protocol support, including Microsoft, Logitech, Mouse Systems, and Intellimouse with wheel support. Note that being a serial port, this does use an IRQ so the IRQ jumper on the PicoGUS must be set to IRQ 4 or 3 depending on which serial port is configured, or use a mouse driver like ctmouse that can use a custom IRQ. Serial mouse can be emulated simultaneously with sound card modes that do not require IRQ such as AdLib, CMS, and Tandy (MPU coming in future firmware for games that don't need MPU IRQ).

The emulated serial port can be set with pgusinit's /mousecom x option.