[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)