[HN Gopher] PicoGUS: Emulate ISA Sound Cards (GUS, Adlib, MPU-40... ___________________________________________________________________ PicoGUS: Emulate ISA Sound Cards (GUS, Adlib, MPU-401, Tandy, CMS) with a Pico Author : _Microft Score : 73 points Date : 2023-05-24 17:22 UTC (5 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | mewse-hn wrote: | If 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 wrote: | Thanks 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. | npunt wrote: | This 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. | polpo wrote: | Yes, to switch the card being emulated, you can flash new | firmware images directly from DOS using the pgusinit.exe | program that ships in the release package. It takes about 5 | seconds to load the firmware and the new emulation is | available to use right away without needing to reboot the | machine. | | Longer-term, I'd like to have multiple cores available in one | firmware image for the ability to instantly enable/disable | them. All code runs from RAM instead of flash for speed, so | that's a potential limitation on the number of cores that can | be loaded simultaneously. | bananaboy wrote: | That is incredibly cool! | jmole wrote: | are 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-schema... | | Curious if you did the HW design first, or SW design first, or | how you came up with this particular solution. | ilyt wrote: | I think it is necessary purely because of relatively small | amount of pins on rp2040 | polpo wrote: | Hardware 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. | csense wrote: | Very cool project. But Sound Blaster is conspicuously missing | from this list. | polpo wrote: | It'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. | [deleted] | bryanlarsen wrote: | Which is odd, because the Sound Blaster is basically a Game | Blaster and an Adlib together on the same card. | TonyTrapp wrote: | Not 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 wrote: | Gravis Ultrasounds really go for hundreds? Shoot. I think I | had two in box that I threw out when cleaning my old | office. | TonyTrapp wrote: | Yep, 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. | homarp wrote: | the 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 wrote: | The red PCB is a must if you're going to properly emulate a | Gravis UltraSound. ___________________________________________________________________ (page generated 2023-05-24 23:00 UTC)