VOGONS


First post, by vorvek

User metadata
Rank Newbie
Rank
Newbie

I don't know where to post about this, I hope this is the right forum. I recently released a virtual cdrom driver for DOS that emulates CD-audio, kind of. I followed the SBEmu route, and used port trapping to mix the uncompressed audio from a .bin file into the stream of audio from an application. I made it this to solve a personal problem, as I seem to find only failing cd-rom drives that die on me after a few months or are too weak to read games consistently, or simply work poorly with CD-R. Or I'm trying to play an original disc that's scratched.

Anyway, here it is working with Quake in an Athlon 600:
https://youtu.be/d03dErJ5VU8

It also has multi-disc support with an image list file (one image location per line) that can then be accessed with ctrl+alt+1 to ctrl+alt+0. Max 10 images, but more than enough for The 7th Guest or Phantasmagoria.

The driver in question is released under GPL3 and can be found here: https://github.com/vorvek/uCDD

The video is a slightly older version, but size is similar. The driver takes around 8KB of conventional memory, ~30KB of UMB and loads most stuff in XMS. It requires a driver that can do port trapping, I developed it with JEMMEX as a base, but extended it to use HIMEM/EMM386. I think 386MAX is also compatible, as it seems to use an extended EMM386 API, or something very similar. I can't vouch for other EMM drivers. Of course, JEMM itself works too if you don't want to use the whole JEMMEX package.

Anyway, I developed it under my own toy emulator and 86box. I've only been able to test it in the Irongate Athlon 600 I have with me, with a few games (Quake, Tomb Raider, Screamer...). I'm sure there may be some games that don't work, or some combination of hardware where it doesn't work either. I probably wouldn't use it in anything slower than a Pentium.

The driver was originally written for SB16 and WSS, I extended it to work with SBPro and SB1.0/1.5/2.0. It taps the port and DMA you set in the BLASTER variable, alongside 530 for WSS. It requires setting the output with UCDDSET. It does sample rate conversion (so, if you have a SBPro it outputs Redbook audio at 22.05khz in stereo instead of 44.1khz in mono, for example) and it also traps the keyboard interrupts, to allow changing discs.

I will mention, I did get help from ChatGPT on various parts of the driver, as some people may have issues with that.