First post, by vorvek
- 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.
List of games tested working:
Absolute Pinball
Alien Trilogy
Alone in the Dark
Alone in the Dark 2
Alone in the Dark 3
Amazing Learning Games with Rayman
An Elder Scrolls Legend: Battlespire
Archimedean Dynasty
Batman Forever: The Arcade Game
Battle Arena Toshinden
Battle Chess Enhanced CD-ROM
Battle Race
BC Racers
Betrayal at Krondor
Big Red Racing
Blam! Machinehead
Blood
Bust-A-Move 2 Arcade Edition
Carmageddon
Chasm: The Rift
Corridor 7: Alien Invasion
Cyber Police (CYBERPO1.EXE)
Cyberball
Descent II
Descent II: Vertigo Series
Destruction Derby
Destruction Derby 2
Fascination
Future Wars
Gobliiins
Gobliins 2: The Prince Buffoon
Goblins Quest 3
Little Big Adventure
Little Big Adventure 2
Loom
Lost in Time
Pro Pinball: The Web
Pro Pinball: Timeshock!
Quake
Rayman
Rayman 60 Levels
Rayman By His Fans
Rayman Designer
Realms of Arkania III: Shadows over Riva
Realms of Arkania: Blade of Destiny (German CD edition)
Realms of Arkania: Star Trail (German CD edition)
Return to Zork
Screamer
Screamer 2
Screamer Rally
ShadowCaster
The Manhole
The Secret of Monkey Island
Tomb Raider