[PicoGUS] rp2040 based ISA card as drop in replacement for GUS

Mu0n

Active Tinkerer
Oct 29, 2021
609
560
93
Quebec
www.youtube.com
Every PC DOS gamer has lusted after the Gravis Ultrasound at a specific point in time near the mid 90's. It offered a significant audio sample quality boost compared to the massively standard sound blaster, SB Pro or SB16. What added to the frustration is that a handful of demos from the scene required it and shut off SB users or gave them a lower quality music.


Enter Ian Scott (@polpo on Mastodon and @ianpolpo on Twitter, ianscott.org ) who tinkered enough with a Pi Pico and found out there was enough speed so that he could port several sound drivers to it.

As it stands at the time of this writing, it can be firmware flashed to be used as:
-Gravis Ultrasound
-adlib
-Tandy 3-voice
-Game Blaster/CMS
-MIDI MPU (requires 3.5mm male to MIDI Din5 female cable)

I had the PCB made by JLCPCB and ordered the mouser list found in the GitHub
PXL_20230226_193921992.jpg


Picos are NOT affected by the raspberry shortage but as I write this in March 2023, it's becoming possible to even buy the normal ones (through rpilocator, but I digress as this project is only compatible with the pico)

Here's the finished assembled product. I had the bracket be 3d printed by a friend. I had to sand down the pointy end a bit as it would not fit inside my PC case. The mouser kit does provide you with a metal case bracket, but you have to source your own M2.5 screws (iirc) and you'd have to drill down your own 2 holes for the audio port and the small midi port.
PXL_20230311_123316843.jpg
PXL_20230311_124038105.jpg


The only place I can use it in my retro gear is inside an upgraded IBM ValuePoint DX2/66 with 32 MB RAM that already had a SB16 vibra clone set at IRQ 5 DMA 1 Port 220.

Therefore, I set my jumpers on my PicoGUS to IRQ 7 DMA 3 and will set my autoexec.bat settings line with those and port 240.

The only non-intuitive step (for me) was getting the Gus firmware on the pico. I followed the steps: press the BOOTSEL button on the soldered on pico (requires a jumper that links the RESET pin to GND to force a programming mode, the guide tells you where), THEN plug it with a microUSB cable to a modern PC or other. The pico memory will show as a volume onto which you can basically only do 1 copy, after which it'll auto unmount and all is good.

I was expecting to copy several firmwares in advance (you can't) and have the files stay permanently visible when you connect it a 2nd time and on (they won't, they're consumed and then wiped).

I then proceeded to install it in my case, which is a pain to open and a heavy CRT has to be set aside...

PXL_20230311_133634404.jpg


Everything so far works!

I'll capture some audio to compare my SB16 and this new PicoGUS soon!
 

Drake

TinkerDifferent Board Vice-President 2023
Staff member
Sep 23, 2021
447
782
93
I made myself an adlib last year which was fun, this card looks like an awesome step up to experiment with other sound fonts.
I know some soundblasters are good in the IBM 5150/5160 but I've never explored that.

I'll have to look at ordering a PCB for this!
Every PC DOS gamer has lusted after the Gravis Ultrasound at a specific point in time near the mid 90's. It offered a significant audio sample quality boost compared to the massively standard sound blaster, SB Pro or SB16. What added to the frustration is that a handful of demos from the scene required it and shut off SB users or gave them a lower quality music.


Enter Ian Scott (@polpo on Mastodon and @ianpolpo on Twitter, ianscott.org ) who tinkered enough with a Pi Pico and found out there was enough speed so that he could port several sound drivers to it.

As it stands at the time of this writing, it can be firmware flashed to be used as:
-Gravis Ultrasound
-adlib
-Tandy 3-voice
-Game Blaster/CMS
-MIDI MPU (requires 3.5mm male to MIDI Din5 female cable)

I had the PCB made by JLCPCB and ordered the mouser list found in the GitHub
View attachment 11259

Picos are NOT affected by the raspberry shortage but as I write this in March 2023, it's becoming possible to even buy the normal ones (through rpilocator, but I digress as this project is only compatible with the pico)

Here's the finished assembled product. I had the bracket be 3d printed by a friend. I had to sand down the pointy end a bit as it would not fit inside my PC case. The mouser kit does provide you with a metal case bracket, but you have to source your own M2.5 screws (iirc) and you'd have to drill down your own 2 holes for the audio port and the small midi port.
View attachment 11260View attachment 11261

The only place I can use it in my retro gear is inside an upgraded IBM ValuePoint DX2/66 with 32 MB RAM that already had a SB16 vibra clone set at IRQ 5 DMA 1 Port 220.

Therefore, I set my jumpers on my PicoGUS to IRQ 7 DMA 3 and will set my autoexec.bat settings line with those and port 240.

The only non-intuitive step (for me) was getting the Gus firmware on the pico. I followed the steps: press the BOOTSEL button on the soldered on pico (requires a jumper that links the RESET pin to GND to force a programming mode, the guide tells you where), THEN plug it with a microUSB cable to a modern PC or other. The pico memory will show as a volume onto which you can basically only do 1 copy, after which it'll auto unmount and all is good.

I was expecting to copy several firmwares in advance (you can't) and have the files stay permanently visible when you connect it a 2nd time and on (they won't, they're consumed and then wiped).

I then proceeded to install it in my case, which is a pain to open and a heavy CRT has to be set aside...

View attachment 11263

Everything so far works!

I'll capture some audio to compare my SB16 and this new PicoGUS soon!
 

Mu0n

Active Tinkerer
Oct 29, 2021
609
560
93
Quebec
www.youtube.com
I made myself an adlib last year which was fun, this card looks like an awesome step up to experiment with other sound fonts.
I know some soundblasters are good in the IBM 5150/5160 but I've never explored that.

I'll have to look at ordering a PCB for this!
I have one left from my batch of 5! Let's talk.
 

Drake

TinkerDifferent Board Vice-President 2023
Staff member
Sep 23, 2021
447
782
93
I have one left from my batch of 5! Let's talk.
Parle en francais?

Je suis aller dans le 5160 avec les l'audio carte pour Les musique?
Mom Ami Muon, donne moi une PCB?

J'taime ordinateur!
 

Mu0n

Active Tinkerer
Oct 29, 2021
609
560
93
Quebec
www.youtube.com
Happy #piday

Reworked and re-uploaded from yesterday - Comparison between my fresh PicoGUS and my old SoundBlaster 16 CT2940 with various dos games and tracker music.

 
  • Love
Reactions: Drake

Mu0n

Active Tinkerer
Oct 29, 2021
609
560
93
Quebec
www.youtube.com
A 1.0.0 firmware was just released!

If you're onto the v2 hardware track, you'll get joystick support! Wavetable support! (I don't really need those because my physical SB16 provides those if I want them).

But one thing that immediately benefits me is that I no longer have to cross my fingers that a firmware swap to another card mode is going to fail while I attempt it with the DOS program of pgusinit.exe, requiring me to:

-turn off my 486
-lug my monitor off of it
-open the case
-plug in a microusb cable to my modern PC while holding the pico's button
-fix things by dumping the firmware from my PC into the temporary drive that shows up in Windows

Things are super rock solid, it was part of the recent fixes:

New features/fixes​

General:​

  • Support for PicoGUS 2.0 hardware and its software-controlled wavetable header volume (/v xxx pgusinit option).
  • A preview of game port joystick emulation using USB joysticks is included in all sound card emulation modes, enabled with the /j pgusinit option. There is also a "joystick exclusive" firmware (pg-joyex.uf2) for when you only want to use a USB joystick and not emluate any sound cards. This is considered a preview because only a few USB joystick types are supported: wired Xbox 360 (and third party clone) controllers and the Sony DualShock 4. More joysticks will be supported in the future! See the Compatibility List wiki page for more information about this feature.
  • Much more reliable firmware flashing from DOS. The previous method abused IOCHRDY to hold the ISA bus far longer than usual, and some chipsets would release the bus before certain flash operations were complete.
  • A more robust startup sequence to improve firmware boot stability. All firmwares have the same LED sequence when starting so you will know when the firmware is ready.
  • Compatibility with slower PSRAM chips that are rated for only 104MHz, such as the Vilsion Tech VTI7064MSME and ISSI IS66WVS1M8BLL-104NLI. This widens available options for those DIYing their own PicoGUS boards.

pgusinit​

pgusinit has been updated to version v2.0.0, featuring:

  • Updates to pgusinit to support the new firmware flashing protocol, as well as support upgrading from v0.x.x firmware to v1.x.x firmware. If you have a v0.x.x version of firmware running on your PicoGUS, you can upgrade to v1.0.0 with the latest version of pgusinit included with the firmware release package.
  • Detects the current card mode and only shows options applicable to that mode when using /? to ask for help.

Adlib emulation:​

  • Fixes an issue where some software would incorrectly detect PicoGUS as an OPL3 instead of an OPL2.

MPU-401 emulation:​

  • Sysex delay can be enabled with the /s pgusinit option. This will prevent buffer overflows on older MPU-401 revisions.
  • Fake all-notes-off for the Roland RA-50 can be enabled with the /n pgusinit option.
  • Fixes song change issue in Frederik Pohl's Gateway. PicoGUS will detect when Gateway is running and enable a hack in how the version and ack are returned. Run pgusinit to restore default operation after you're done playing Gateway.
  • Running pgusinit will silence any stuck notes if a program exits unceremoniously.


GITHUB LINK: https://github.com/polpo/picogus/releases/tag/v1.0.0
 
  • Like
Reactions: Nitram78

Mu0n

Active Tinkerer
Oct 29, 2021
609
560
93
Quebec
www.youtube.com
If you're interested by a hardware Gravis UltraSound but are not made of money to buy an original one and can't be bothered to solder your own board from the github project files, then the newest hardware revision v2 just hit today in Ian Scott's tindie store and you can buy your own, now with a metal bracket and joystick support via USB.


1700152475507.png