VOGONS


Reply 1780 of 1799, by polpo

User metadata
Rank Member
Rank
Member

PicoGUS firmware v4.0.0 is released!
Download it at: https://github.com/polpo/picogus/releases/tag/v4.0.0

New features/changes

Sound Blaster 16

SB mode now emulates a Sound Blaster 16. I had a somewhat-working implementation of the SB16 DSP in late 2024 but was discouraged by poor compatibility in Windows. Recently the ISA analyzer firmware (see below) gave me an easier way to compare PicoGUS to how a real SB16 behaves when detected by Windows and fix the long-standing bugs. Massive thanks to [Artem Vasilev (wbcbz7)](https://github.com/wbcbz7) who implemented proper mixer support and implemented a ton of additional fixes, including support for DMA controller demand mode, all of which made SB16 and SBPro support truly usable.

OPL3 support is provided by the dbopl OPL3 emulator (this was the default OPL3 emulator in DOSbox until somewhat recently). The previous emu8950 OPL2 emulator is still available in Adlib mode, and has some improvements thanks to [Daniel Arnold (Delphius)](https://github.com/RetroLoom): fixes to timer 2 and disabling of some of the optimizations made to emu8950 for rp2040-doom that affect sound quality. Delphius also experimented with Aaron Giles's [ymfm](https://github.com/aaronsgiles/ymfm) for OPL2/OPL3 emulation but it has some issues with RAM and CPU usage so it's not used for now.

Because PicoGUS is an 8-bit card, it does not support high DMA. This is actually a mostly-supported configuration for SB16: several versions could be jumpered to disable high DMA, and the Creative Vibra 16X/16XV does not support high DMA at all. Almost all SB16-supporting software is fine working without high DMA, or configuring the same DMA channel for both low and high DMA.

SB mode also supports Sound Blaster Pro stereo properly and still supports SB 2.0. `pgusinit` can be used to set the DSP version reported by PicoGUS. The Line In channel in the SB mixer also controls the volume of the wavetable header.

ISA analyzer firmware

PicoGUS now has an ISA analyzer firmware that captures and logs ISA bus activity. This was inspired by the IDE analyzer firmware I wrote for PicoIDE. Having a tool like this brings a ton of insight into what's going on in the bus. Note that this firmware is made for the PicoGUS 1.x board with the RP2350-based Pico 2 or Pimoroni Pico Plus 2.

Fixes/improvements

CD-ROM support

  • The stock Win9x MKEPanasonic driver can now be used with PicoGUS. This driver does not peg the CPU like the Creative driver, which should give much more acceptable performance. Credit to 86Box as a reference for this fix.
  • CD-ROM speed in SB mode is even faster again - I've gotten speeds between 3.75X and 4.75X in DOS.
  • Lots of general fixes & improvements to CD-ROM support, thanks to [Daniel Arnold (Delphius)](https://github.com/RetroLoom): protocol correctness fixes, pgusinit /cdlist stability, CUE parsing, and larger CD audio buffer.

GUS mode

  • The audio rendering in GUS mode is now interrupt-driven like SB mode. This allows for finer grained handling of IRQs which should help random freezes in GUS titles, and frees up CPU to allow more titles to work with forced 44.1kHz sampling rate.
  • Fixes volume ramp rate calculation in force 44.1kHz mode.
  • Fixes a race condition when updating volume ramp, again helping random freezes.

General

  • Reverted back to the pre-v3.2.0 method of overclocking the RP2040. This should hopefully fix the "doesn't come back after changing modes" issue reported by some people.

Looking to the future

We are very much at our RAM limit. Delphius was working on a major overhaul of joystick code (see some of the posts above by him) but I ran into issues with running out of RAM in some modes with those changes. I'm confident we can solve those issues, so look forward to that in the next major firmware release!

creator of PicoGUS and PicoIDE

Reply 1781 of 1799, by appiah4

User metadata
Rank l33t++
Rank
l33t++

Thank you polpo!

Would it be possible to also add an SB Pro mode for the card? I am asking because the SB16 mode is great and all but not all games support that, and if you run SB Pro audio into SB16 some games reverse the stereo..

Reply 1782 of 1799, by Yoghoo

User metadata
Rank Oldbie
Rank
Oldbie
appiah4 wrote on 2026-04-06, 17:10:

Thank you polpo!

Would it be possible to also add an SB Pro mode for the card? I am asking because the SB16 mode is great and all but not all games support that, and if you run SB Pro audio into SB16 some games reverse the stereo..

It says: "SB mode also supports Sound Blaster Pro stereo properly and still supports SB 2.0". So it is supported. Or am I missing something?

Reply 1783 of 1799, by polpo

User metadata
Rank Member
Rank
Member
appiah4 wrote on 2026-04-06, 17:10:

Thank you polpo!

Would it be possible to also add an SB Pro mode for the card? I am asking because the SB16 mode is great and all but not all games support that, and if you run SB Pro audio into SB16 some games reverse the stereo..

The way DMA is set up with regards to SB stereo on PicoGUS is much more stateful than the L/R flip flop on the SB Pro, so reversed stereo shouldn't be an issue. There's a commonly used "ritual" on the SBPro to properly get the L/R flip flop in the right state when starting stereo, and the PicoGUS handles that. But if you do find any titles that do have reversed stereo please let me know.

creator of PicoGUS and PicoIDE

Reply 1784 of 1799, by appiah4

User metadata
Rank l33t++
Rank
l33t++
polpo wrote on 2026-04-06, 17:36:
appiah4 wrote on 2026-04-06, 17:10:

Thank you polpo!

Would it be possible to also add an SB Pro mode for the card? I am asking because the SB16 mode is great and all but not all games support that, and if you run SB Pro audio into SB16 some games reverse the stereo..

The way DMA is set up with regards to SB stereo on PicoGUS is much more stateful than the L/R flip flop on the SB Pro, so reversed stereo shouldn't be an issue. There's a commonly used "ritual" on the SBPro to properly get the L/R flip flop in the right state when starting stereo, and the PicoGUS handles that. But if you do find any titles that do have reversed stereo please let me know.

Great to know, thank you!

Reply 1785 of 1799, by NeoG_

User metadata
Rank Oldbie
Rank
Oldbie

When you said the new firmware was coming soon you weren't kidding! Can't wait to try this firmware tonight.

My system has random GUS freezing in OMF2097 and ROTT which hopefully is improved and it also would occasionally die when changing modes (although always when switching to USB mode?). Also my CD speed has taken a dive the more over 100 images I have on the USB stick so hopefully the CD speed improvements make up for it a bit as well. On top of that if the SB16 works well I can take the dedicated SB16 out of the system and free up a slot.

A lot for me to chew on.

98/DOS Rig: BabyAT AladdinV, K6-2+/550, V3 2000, 128MB PC100, 20GB HDD, 128GB SD2IDE, SB Live!, SB16-SCSI, PicoGUS, WP32 McCake, iNFRA CD, ZIP100
XP Rig: Lian Li PC-10 ATX, Gigabyte X38-DQ6, Core2Duo E6850, ATi HD5870, 2GB DDR2, 2TB HDD, X-Fi XtremeGamer

Reply 1786 of 1799, by NeoG_

User metadata
Rank Oldbie
Rank
Oldbie
polpo wrote on 2026-04-06, 16:22:

PicoGUS firmware v4.0.0 is released!
Download it at: https://github.com/polpo/picogus/releases/tag/v4.0.0

My initial testing

- CD list issues are fixed
- Doom, Tyrian, Fuzzy's World, Whacky Wheels OPL2 music runs at full speed no issues
- SB16 FX in Duke3D works perfectly, first set HDMA5 in setup then edit the HDMA in DUKE3D.CFG to be the same as LDMA
- OMF2097 GUS crash was game speed related, for some reason the game will randomly freeze with GUS if the game speed is set to over ~50% in the game menu. Since I like fast gameplay I increased the CPU speed for this game to compensate.
- CD Audio and SB16 FX working well in Quake

- OPL2 in descent and duke3d plays slightly slower than expected
- OPL3 in descent much slower than expected, stuttery gameplay.

- OPL2 slowdown in duke3d and descent is gone with the ISA bus tweaks mentioned below. OPL3 in descent is much faster but still experiences a bit more slowdown compared to hardware YMF262 in game but no stutter at least. Menu music is full speed.
- Rise of the Triad Dark War still freezes randomly, but now also has sound FX clicking in GUS mode with the new firmware. SB16 works perfectly. OPL2 audio is full speed.
- Using the MKEPanasonic driver in win98 is much better than the creative driver but seems unable to read ISO files. BIN/CUE files work fine.

The virtual CD slowdown I was getting (read speed 1.64x) was unrelated to the amount of images on the USB drive, it was because the IO recovery period in the BIOS was set to a high value causing slow ISA bus transfers. With some ISA bus tweaks the speed is now 3.51x for BIN/CUE mixed mode and 4.52x for ISO data only files. even with 200 files/130 images on the USB stick. No more slowdowns with the Mech 2 intro.

In general the new OPL engine sounds a tad crunchy but I expect that is because using modern DAC/analog path lets through more high frequency than a vintage card (I was previously using an SB16 with YMF262 for OPL).

Also I like that the SB16 firmware initializes itself into a working state right off the bat, unlike a real SB16 that is silent until you run diagnose/mixerset - Less stuff in Autoexec.

Last edited by NeoG_ on 2026-04-08, 03:19. Edited 3 times in total.

98/DOS Rig: BabyAT AladdinV, K6-2+/550, V3 2000, 128MB PC100, 20GB HDD, 128GB SD2IDE, SB Live!, SB16-SCSI, PicoGUS, WP32 McCake, iNFRA CD, ZIP100
XP Rig: Lian Li PC-10 ATX, Gigabyte X38-DQ6, Core2Duo E6850, ATi HD5870, 2GB DDR2, 2TB HDD, X-Fi XtremeGamer

Reply 1787 of 1799, by 919guy

User metadata
Rank Newbie
Rank
Newbie
polpo wrote on 2026-04-02, 15:39:

I didn't have much issue with simultaneous mouse and USB flash drive on a hub myself, but Delphius's fixes should help that for those who are having problems. It'll be out in a new firmware very soon, in addition to Sound Blaster 16 and OPL3 support.

In my case, it seems the USB flash drive was the reason it wasn't working with the USB hub. I'm having no issues now with a different USB drive. 😀

Thanks for the new firmware release. It's just fantastic how the PicoGUS has evolved.

Reply 1788 of 1799, by Duffman

User metadata
Rank Oldbie
Rank
Oldbie

@polpo

Since you're at the limits of the RP2040 will you be looking at making an improved RP2350 (or some other micro-controller?) version of the PicoGUS?

MB: ASRock B550 Steel Legend
CPU: Ryzen 9 5950X
RAM: Corsair 64GB Kit (4x16GB) DDR4 Veng LPX C18 4000MHz
SSDs: 2x Crucial MX500 1TB SATA + 1x Samsung 980 (non-pro) 1TB NVMe SSD
OSs: Win 11 Pro (NVMe) + WinXP Pro SP3 (SATA)
GPU: RTX2070 (11) GT730 (XP)

Reply 1789 of 1799, by myne

User metadata
Rank l33t
Rank
l33t

Is it not impossible to use a standard pi for the task?
(wiring aside)

Is there some fundamental difference between a pi microcontoller and a std pi?

I'm pretty ignorant on microcontollers.

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 1790 of 1799, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
myne wrote on 2026-04-08, 01:19:
Is it not impossible to use a standard pi for the task? (wiring aside) […]
Show full quote

Is it not impossible to use a standard pi for the task?
(wiring aside)

Is there some fundamental difference between a pi microcontoller and a std pi?

I'm pretty ignorant on microcontollers.

The project originally started with a regular RPi but switched to Pico later on. You can read more in the Original Post (PiGUS) section in the OP.

I think it's the PIO that Pico (RP2040) has, which enabled better performance in some aspects compared to standard RPi.

Reply 1791 of 1799, by polpo

User metadata
Rank Member
Rank
Member

I don't plan on designing new hardware for PicoGUS until I'm "done" with PicoIDE. It'll probably be a while. Maybe I'll luck out and the follow-up to RP2350 will be out by then!

Like LSS10999 said, I started this project on a full Raspberry Pi 3 but ran into pandemic-era Pi shortages. I have to say it's been a lot more fun fitting everything onto the RP2040, and it definitely makes the PicoGUS quite a bit cheaper to buy.

creator of PicoGUS and PicoIDE

Reply 1792 of 1799, by myne

User metadata
Rank l33t
Rank
l33t

I wasn't suggesting you should. Just that it might be an option for tinkerers who don't mind running jump wires.

Are you able to comment on potential lpc bus support?
I figure in some ways it might free resources for more modern boards and allow real 16bit.
The lpc bus looks relatively simple to "bit bang" compared to Isa given its only 7or8 real pins and 4 bit bus, but I know basically nothing.

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 1793 of 1799, by polpo

User metadata
Rank Member
Rank
Member
myne wrote on 2026-04-08, 02:28:
I wasn't suggesting you should. Just that it might be an option for tinkerers who don't mind running jump wires. […]
Show full quote

I wasn't suggesting you should. Just that it might be an option for tinkerers who don't mind running jump wires.

Are you able to comment on potential lpc bus support?
I figure in some ways it might free resources for more modern boards and allow real 16bit.
The lpc bus looks relatively simple to "bit bang" compared to Isa given its only 7or8 real pins and 4 bit bus, but I know basically nothing.

It would be really cool to support LPC but it's not something I'd tackle myself. A few people here and there have brought it up but nobody has taken up the task yet... I'd love to see it!

creator of PicoGUS and PicoIDE

Reply 1794 of 1799, by Feallan

User metadata
Rank Newbie
Rank
Newbie

Thank you to everyone working on this project. This update looks amazing

Reply 1795 of 1799, by vutt

User metadata
Rank Member
Rank
Member

Looks good. All players I'm using seems to be working fine. DOS demos old and new as well.

Only question is about resource assignment. Is "A220 I5 D1 H1 T6" hardcoded for SB16? Anything else even with "A240 I5 D1 H1 T6" init is complaining that BLASTER variable is malformed ...

Reply 1796 of 1799, by polpo

User metadata
Rank Member
Rank
Member
vutt wrote on Yesterday, 16:08:

Looks good. All players I'm using seems to be working fine. DOS demos old and new as well.

Only question is about resource assignment. Is "A220 I5 D1 H1 T6" hardcoded for SB16? Anything else even with "A240 I5 D1 H1 T6" init is complaining that BLASTER variable is malformed ...

That's a bug in how the BLASTER variable is parsed by pgusinit and the IRQ/DMA config values are sent to the SB16 mixer state. It's harmless but very annoying. A fix will go out in the next release which should be pretty soon...

creator of PicoGUS and PicoIDE

Reply 1797 of 1799, by NeoG_

User metadata
Rank Oldbie
Rank
Oldbie
vutt wrote on Yesterday, 16:08:

Looks good. All players I'm using seems to be working fine. DOS demos old and new as well.

Only question is about resource assignment. Is "A220 I5 D1 H1 T6" hardcoded for SB16? Anything else even with "A240 I5 D1 H1 T6" init is complaining that BLASTER variable is malformed ...

Just a sanity check, are you also updating /sbport, /sbirq and /sbdma to match the blaster variable and saving to flash?

98/DOS Rig: BabyAT AladdinV, K6-2+/550, V3 2000, 128MB PC100, 20GB HDD, 128GB SD2IDE, SB Live!, SB16-SCSI, PicoGUS, WP32 McCake, iNFRA CD, ZIP100
XP Rig: Lian Li PC-10 ATX, Gigabyte X38-DQ6, Core2Duo E6850, ATi HD5870, 2GB DDR2, 2TB HDD, X-Fi XtremeGamer

Reply 1798 of 1799, by MadMac_5

User metadata
Rank Member
Rank
Member

I just finished trying the 4.0.0 firmware, and ran a few tests in SB16 mode. I'll do some more robust comparisons with a CT2230 this weekend if I can spare some time, but so far testing in TIE Fighter and Doom are sounding pretty damned good to my ear. Doom even sounds as it should with the DMX audio patch library, which is impressive indeed! And, as a stress test, I ran the Tyrian setup program which seems to hate anything that's not an ISA Sound Blaster card; the PicoGUS SB mode works flawlessly, so kudos to everyone who worked so hard to make this patch happen!

My only complaint is that I can't use my trusty Gravis Analog Pro joystick in DOS games without a second sound card; I'll probably end up using a Vortex 2 card set to SB emulation, then configure my games to use different resources than the ones assigned to the emulated Sound Blaster. That way I can still use the gameport, and ignore all of the sound hardware on the PCI card.

Reply 1799 of 1799, by vutt

User metadata
Rank Member
Rank
Member
NeoG_ wrote on Yesterday, 23:56:
vutt wrote on Yesterday, 16:08:

Only question is about resource assignment. Is "A220 I5 D1 H1 T6" hardcoded for SB16? Anything else even with "A240 I5 D1 H1 T6" init is complaining that BLASTER variable is malformed ...

Just a sanity check, are you also updating /sbport, /sbirq and /sbdma to match the blaster variable and saving to flash?

Yes I tried both auto env variable and command line options. Well my fail was - since I got init error I didn't even try to run any games/demos. It works just fine, just checked, so it's indeed error msg error.

Another observation. Something happened between very first PicoGUS CD firmware release and now. My main compact Verbatim 32GB USB stick does not play CD audio cleanly any more while random way older 16GB SP branded one plays just fine. Verbatim is nice compact. I guess I need to go shopping for another compact one...