5 ms·
PicoGUS: Emulate ISA Sound Cards (GUS, Adlib, MPU-401, Tandy, CMS) with a Pico
- csense 3y agoVery cool project. But Sound Blaster is conspicuously missing from this list.
- deleted 3y ago[deleted]
- bryanlarsen 3y agoWhich is odd, because the Sound Blaster is basically a Game Blaster and an Adlib together on the same card.
- TonyTrapp 3y agoNot really, the Game Blaster had no sample playback and was based on two Philips SAA1099 synthesizer chip; those chips and thus Game Blaster compatibility was removed already in the Sound Blaster 1.5 cards. A Sound Blaster as it is known today has nothing in common with the Game Blaster. That said, it's more likely that the project doesn't support it (yet) because it's still much easier and cheaper to obtain a Sound Blaster than any of the other cards, since it was ubiquitous. GUSes typically go for hundreds of Euros these days while SBs can be had for much less than hundred.
- pavlov 3y agoGravis Ultrasounds really go for hundreds? Shoot. I think I had two in box that I threw out when cleaning my old office.
- TonyTrapp 3y agoYep, just look on ebay. It's completely crazy. And people actually buy them for that price, too, it's just not offers sitting there for years without a taker.
- Sophistifunk 3y agoMany, many hundreds.
- hondadriver 3y agoI threw away a Gravis Ultrasound with the 16-bit daughter board and a Terratec EWS64 XL a few years ago when we moved. .. oops ...
- polpo 3y agoIt's on the list of things I want to support eventually. A friend I collaborate with on Discord is working on Sound Blaster support for his Pico-based retro PCMCIA project and I plan on using his code. I'd adapt DOSBox's SB code but it's surprisingly complex - DSP support for the whole gamut of SB cards from the Sound Blaster 1.0 to the Sound Blaster 16 are in the same source file, and extracting the parts that I'd need would be more pain than I'm willing to deal with right now. TonyTrapp's comment below raises a good point – I've tried to focus on emulating sound cards that are harder to find and are possible to do on the Pico. Old used Sound Blaster compatible cards are still relatively available and affordable, compared to the GUS or genuine MPU-401s with intelligent mode. CMS compatible boards are also hard to find, and Tandy compatible boards that you can plug into a normal non-Tandy PC are solely available via DIY projects.
- mewse-hn 3y agoIf this interests you, there's a new bit of software called SBEMU that is able to emulate old sound blasters on modern intel HDA sound hardware - I was able to run freedos on an old netbook and get audio in dos games.
- polpo 3y agoThanks for posting this! I'm the author of the project and I've seen it pop up here on HN a few times when searching but I haven't seen it make it the front page until now. It's been really fun pushing the limits of the RP2040 microcontroller and learning how to use its PIO capabilities has been eye opening. I've created PIO code to handle the ISA bus and interface with SPI-based PSRAM at higher speed than I could with the RP2040's built-in SPI peripheral.
- jmole 3y agoare the PIO blocks wide enough to handle an ISA bus? Or are you using a shift register or another port on the pico to interface with the bus? edit: looking at the schematic it looks like you have the address/data pins multiplexed on an 8-bit port: https://github.com/polpo/picogus/blob/main/hw/PicoGUS-schematic.pdf https://github.com/polpo/picogus/blob/main/hw/PicoGUS-schema... Curious if you did the HW design first, or SW design first, or how you came up with this particular solution.
- polpo 3y agoHardware design came first but the design did have to take into account some of the constraints of programming PIO. I had to make sure certain signals were on adjacent pins, since the range of pins you must set for in, out, set, or sideset pins in a PIO program must be contiguous. I did have to do another board spin when I realized an error I made with some of my pin orderings. I went for an 8-bit mux/demux to multiplex the 8 data pins and lower 8 bits of the address because I thought it'd be faster, but I do have to delay quite a bit in the PIO program while I wait for the mux to switch. Given the very high speed that you can feed serial data into a PIO, a couple of high speed shift registers might have worked just as well and would have saved on GPIO pins which are a very precious resource.
- ilyt 3y agoI think it is necessary purely because of relatively small amount of pins on rp2040
- npunt 3y agoThis is a really cool project! Is it possible to run a program in DOS to switch the sound card being emulated? I could see creating the ideal RX (Retro eXperience, you heard it here first) with .bat files for each different game/program with the desired sound settings.
- homarp 3y agothe Gravis Ultrasound has a linux history: The ALSA sound driver was originally written as a replacement for the Linux kernel sound for Gravis UltraSound (GUS) cards. As this GUS replacement proved to be a success, the author started the ALSA project for a generic driver for several sound chips, with fully modularized design.
- cbm-vic-20 3y agoThe red PCB is a must if you're going to properly emulate a Gravis UltraSound.
- unixhero 3y agoGeez!!! This is a major milestone
- crtified 3y agoI have built a couple of these PicoGUS cards to use in my retro PCs, and they are very good indeed.
- 8lall0 3y agoI am amazed by the amount of limits the community is pushing with a pico. If only the rp2040 had an integrated DAC...