Re: Raven. A homemade Atari-like computer
Posted: 01 Dec 2025 15:46
Amazing. Thanks. Looking forward to updates on this.agranlund wrote: 30 Nov 2025 20:11 Fueled by inspiration from finally trying out my new ESS+GUS soundcard I re-started working on some kind of centralized soundsystem thing.
It's just a start, perhaps no more than a proof of concept, and a long way off still :)
Drivers themselves are external plugins and these can publish one or several of the following devices to the system:
midi-out, midi-in, audio-out, audio-in, mixer, chip
- mixer is something that has a bunch of named controls. what they do is up to the driver but usually these are volume controls.
User should be able to freely re-bind individual controls to their xbios counterpart and this becomes especially interesting when you have multiple soundcard. (In my setup I may want to use "GUS:master" as the xbios master volume but "SB:fm" for the xbios fm volume)
- chip is a named "raw" device which can only expose functions for reading/writing its registers.
Not very exciting for the end user but quite nice for developers.
Taking OPL as an example. Assuming a driver has publishing something it calls "OPL3", a game could do something like this:And now the game doesn't need to know where that chip is, it just needs to talk to the driver which more or less has as its only purpose to abstract the bus-layer.Code: Select all
dev = rvsnd->Find(RVSND_DEVTYPE_CHIP, 0, "OPL3"); dev->write(reg, data);
The new Midi-out OPL softsynth driver is using this. Unlike the old one, it has no idea what an ISA bus is and just asks rvsnd if there is a chip driver registered for something called "OPL3" or "OPL2".
So if someone puts an OPL on a cartridge, makes an rvsnd driver, then the above should automatically just work with that thing too.
A lot of this is still theory and the biggest part is still missing which is audio out and the xbios Falcon dma-sound wrapper.
Right now there is only an OPL chip driver for ISA bus + a couple of Midi drivers. And a very basic control/test cmdline application.
Next up would be to start on the soundblaster driver, which should lead to starting to work on getting audio and mixer device stuff in place.
Having a central soundsystem let's you do unnecessary stuff like swapping at runtime which device you want xbios midi to go to:
(and also, individual driver binaries become hilariously tiny as they only need to do what is specific for it.. Raven midiport driver is ~400 bytes and the MPU401 driver is ~800 bytes large)
While I'm doing this for Raven I do intend on possibly using this on the V4SA and Atari ST too.
On AtariST it could be useful for sound devices such as Covox, MV16 etc.. I remember writing multiple codepaths in ScummST for supporting a couple of cartridges, Covox, and samples through YM2149 -- then I more or less copy/pasted that code into BasiliskII.
Having those as drivers for something like this might make more sense.