VOGONS


uCDD - virtual drive with Redbook audio for DOS

Topic actions

Reply 20 of 31, by vorvek

User metadata
Rank Newbie
Rank
Newbie
davidmorom wrote on 2026-09-25, 16:23:

Absolute Pinball -> Freezes with blinking cursor al launch


Can you try launching Absolute Pinball from the CD instead of the HDD? I think the eXoDOS dump is missing TRACKS.CDL in its HDD installation.
The game fails because it uses a DSP mode that uCDD rejects, 16-bit unsigned stereo. Cyberball fails for a similar reason, it uses 16-bit signed mono, which it also doesn't work. I'll fix those in the next version.

Also, I cannot find a Cyber Police image with Red Book audio anywhere. I think I can just launch the game with some music cd mounted, but that's not exactly a proper test if the game does anything fancy.

Reply 21 of 31, by davidmorom

User metadata
Rank Newbie
Rank
Newbie

There seems to be two version of the game, one with the name Cyber Law on the title screen without CD audio, and another one with the name Cyber Police and with CD Audio. I sent you a PM.

I also found another two very important (in my opinion) failing games. Destruction Derby 1 and 2. Both games behaves the same, SFX and music initially work but the game stutters extremely. After a while SFX and stuttering dissapears, but the CD-DA music remains.

Reply 22 of 31, by vorvek

User metadata
Rank Newbie
Rank
Newbie

I'll add them to the list. Some of the games you mentioned earlier have tricky fixes (Chasm requires a whole 16-bit extension that uCDD didn't have). Destruction Derby may be fixed by some of the changes I'm currently working on, it's going to be a big patch!

Reply 23 of 31, by vorvek

User metadata
Rank Newbie
Rank
Newbie

uCDD Beta 0.9.3

Download here ---> https://github.com/vorvek/uCDD/releases/tag/v0.9.3

This one grew a lot. It started as a pass through the game reports in this thread and ended with 16-bit DPMI support, a new UCDDSET, and a change to how DPMI and VCPI games are handled, and a little extra. Here's what was going on with each reported game.

  • Absolute Pinball (freeze with a blinking cursor): the game asks the CD driver for audio info with a transfer length of 0. uCDD rejected that, and the game retried forever. Past that there were three more problems: its extender expects FS and GS to survive a mode switch (the host cleared them), it does mode switches from inside real-mode calls (the host lost track), and during background CD reads the disk IRQ got stuck in protected mode while the BIOS waited for it. All fixed; tables play with CD music and effects.
  • Amazing Learning Games with Rayman (CD-DA restarts or missing): PMODE/W prefers VCPI when it's available. In VCPI mode the game runs its own protected mode and talks to the sound card directly, so uCDD never sees the sound. uCDD now hides VCPI while it provides DPMI (see below). There's still one track restart at the change from the intro to the menu; I think the game does that on purpose.
  • Battlespire (freeze at the name prompt): same story, CauseWay picks VCPI. With VCPI hidden it uses uCDD's DPMI host (it also needed three DPMI calls that the host didn't support). Character creation and the first level work, with CD music.
  • Batman Forever: The Arcade Game (CD-DA restarts): the game keeps asking "did the disc change?" and restarts the track when the drive doesn't report "busy". uCDD only set busy on some requests. Now it reports busy on every request while audio plays.
  • Batman Forever (stutter): I couldn't clearly reproduce this one. Against a native IDE CD in 86Box, the frame rate and audio looked about the same. The DOS/4GW speedup below should help anyway; feedback is welcome.
  • Battle Race (no SFX): the game sets the SB16 mixer, resets it, and then sets the voice volume. uCDD got the reset wrong and played the effects at about -24 dB. It also uses sound blocks longer than its DMA buffer, which uCDD rejected. Both fixed.
  • Blood (exception dump at launch): the Apogee Sound System reads the current DMA address and page register. uCDD only emulated the DMA count, so the game got garbage and crashed in its mixer. uCDD also didn't accept DSP command 42h, and sound setup was very slow (see the host changes). E1M1 now plays with CD music and effects.
  • Bust-A-Move 2 (freeze at the loading screen): three problems. The Miles driver's detection IRQ arrived during a real-mode call and wasn't delivered in time. The driver writes its handler straight into the interrupt table, and uCDD's host put the old value back after each host call. And the loading screen was very slow (see below). Now it loads at native speed and plays with CD music.
  • Cyber Police (no SFX): the game plays one long sound block over a short DMA buffer and polls the DMA position. uCDD didn't allow that. Effects work now.
    About Red Book: thanks for sending me an image of the CD. It turns out the eXoDOS version runs CL.EXE, which never plays CD audio, even with a real CD drive. CYBERPO1.EXE on the same CD does play the music, and that works with uCDD. (In 86Box, CYBERPO1 draws garbage on the S3 ViRGE; a Cirrus or ET4000 card is fine.)
  • Cyberball (no sound): PMODE/W and VCPI again. After that it needed 45 kHz output (uCDD capped rates at 44.1 kHz), 16-bit mono samples, and short sound blocks inside a larger buffer for the table sounds. All fixed.
  • Chasm: The Rift ("cannot initialize"): Chasm is a 16-bit DPMI program (Borland Pascal 7 with RTM), and uCDD's host only supported 32-bit clients. The host now runs 16-bit clients too. RTM also expects the host to translate DOS calls that use protected-mode pointers, as Windows does, so there's a translation layer for that now. RTM also uses one selector per heap block, so the host now has room for 8192 selectors. Chasm plays with CD music and effects.
  • Alpha Storm (no CD-DA): I couldn't reproduce this. CD audio plays for me in both 0.9.2c and 0.9.3. If you still see it, please post your setup (card, BLASTER, memory manager, and where it goes silent).

Protected mode changes

  • VCPI is hidden by default while uCDD provides DPMI. Extenders that prefer VCPI (PMODE/W, CauseWay) then use uCDD's DPMI host, and their sound goes through uCDD. If a program only supports VCPI, install with UCDD -install -vcpi. That program's sound then bypasses uCDD. Of course, the usefulness of this is very limited. You still get the CD-ROM data track, I guess.
  • DOS/4GW games are much faster during file access. DOS/4GW runs its DOS call path with interrupts off and turns them back on with POPF, which a protected-mode host can't see. The host single-stepped every instruction to catch it: about 80,000 traps per second while Bust-A-Move 2 was loading. Now it uses the Windows 95 trick (mark the saved flags so the POPF traps once) and learns which code spots can skip stepping. Bust-A-Move 2 loads at (close to) native speed.
  • 16-bit DPMI clients with DOS translation, as described under Chasm.

New setup steps (please read, this changes a fair bit)

  1. Initialize your sound card first, with jumpers, UNISOUND, CTCM, the card's setup program, or whatever your card needs. uCDD no longer sets the IRQ and DMA of SB16 and WSS cards. It only needs to know where the card is.
  2. Run UCDDSET once. Enter the physical card, or use Detect. Pick the virtual card that games will see: SB16, SB Pro, or SB 1.5/2.0, plus a virtual WSS. Set the hotkeys and the mixer levels, then save. Everything goes into UCDD.CFG. The file format is new, so UCDDSET opens its menu once if you have an old UCDD.CFG.
  3. Keep UCDDSET.EXE next to UCDD.EXE. UCDD -install now always runs it. With a valid UCDD.CFG it doesn't show anything: it copies the settings into the driver and sets BLASTER for the virtual Sound Blaster (other BLASTER fields, such as P330, are kept).
  4. If you change your card or your settings, run UCDDSET again. UCDD doesn't read BLASTER anymore. UCDD.CFG is the only configuration source.

The hotkeys are configurable now: modifiers (including the Super/Win keys), disc keys (1 to 0 or F1 to F10), next disc, previous disc, eject/insert, and CD volume up and down. The eject hotkey works for single images too, not only MDM lists.

ucddset.png

Other bits

  • MODE2/2352 (Form 1) data tracks in CUE sheets.
  • UCDDPLAY.EXE, a little extra goodie.

As usual, reports are welcome, and thanks a lot for your help!

Reply 24 of 31, by Yoghoo

User metadata
Rank Oldbie
Rank
Oldbie

Impressive progress! Not tested it yet will certainly do so in the future.

Will UCDDPLAY also be able to play real CDs in the future? Looks great and would be nice to use it as a standalone program as well (when uCDD is not loaded).

Reply 25 of 31, by davidmorom

User metadata
Rank Newbie
Rank
Newbie

Amazing work, I have no words. I will continue testing as soon as I have some time. The UCDDPLAY program is crazy!

Reply 26 of 31, by vorvek

User metadata
Rank Newbie
Rank
Newbie
Yoghoo wrote on Yesterday, 23:52:

Impressive progress! Not tested it yet will certainly do so in the future.
Will UCDDPLAY also be able to play real CDs in the future? Looks great and would be nice to use it as a standalone program as well (when uCDD is not loaded).

You mean using it as a driver for normal disc drives? I'm not sure if I could shrink the extras more than something like vide-cdd.sys, and technically you can already have the two drivers side by side. I'll look into it, though.

davidmorom wrote on Yesterday, 23:58:

Amazing work, I have no words. I will continue testing as soon as I have some time. The UCDDPLAY program is crazy!

I wanted something to quickly test if the set up had worked x)

Reply 27 of 31, by Yoghoo

User metadata
Rank Oldbie
Rank
Oldbie
vorvek wrote on Today, 00:02:
Yoghoo wrote on Yesterday, 23:52:

Impressive progress! Not tested it yet will certainly do so in the future.
Will UCDDPLAY also be able to play real CDs in the future? Looks great and would be nice to use it as a standalone program as well (when uCDD is not loaded).

You mean using it as a driver for normal disc drives? I'm not sure if I could shrink the extras more than something like vide-cdd.sys, and technically you can already have the two drivers side by side. I'll look into it, though.

I didn't mean as a driver. 😀 Just as a CD player for physical audio CDs. So just using oakcdrom (or vide-cdd etc) and mscdex loaded and than play audio CDs from your real/physical CD-ROM drive.

Reply 28 of 31, by vorvek

User metadata
Rank Newbie
Rank
Newbie

Oh, sorry, yeah, UCDDPLAY can be extended, it was meant just as a toy, but I can make it so that the Open menu allows picking actual drives too.

Reply 29 of 31, by vorvek

User metadata
Rank Newbie
Rank
Newbie

I've been investigating, and UDVD2 and vide-cdd seem to allow extracting a disc's track table and audio sectors, so it seems possible. This could also be used to allow physical drives to play Red Book audio without an internal cable. I'll look further into it, as that sounds like a nice feature to have.

Reply 30 of 31, by vorvek

User metadata
Rank Newbie
Rank
Newbie

Beta 0.9.3a is out! https://github.com/vorvek/uCDD/releases/tag/v0.9.3a

UCDDPLAY can now play normal audio CDs through digital extraction, with the equalizer and visualizations still active and no internal CD audio cable needed. Use a compatible CD drive (tested with UDVD2, OAKCDROM, or VIDE-CDD) and SHSUCDX, then select the drive in the Open menu. For now this is limited to UCDDPLAY, but I think I can extend uCDD to allow Redbook Audio through data streams from physical drives..

This update also adds CUE flags and PRE de-emphasis, reduces loading delays in Rayman games, and fixes startup or audio issues in Rayman, Betrayal at Krondor, Little Big Adventure 1/2, and Corridor 7. Soccer Kid's startup freeze is fixed, but its CD music still needed a separate game workaround.

New entries in the working list include Destruction Derby 1/2, the Rayman games, ShadowCaster, Betrayal at Krondor, Little Big Adventure 1/2, Corridor 7, and Return to Zork.

Special thanks to @davidmorom for all the testing and reports!

Reply 31 of 31, by davidmorom

User metadata
Rank Newbie
Rank
Newbie

I've been testing all the recent changes over the weekend to check the current status of the reported games. As I don't have access to my retro computers on weekends, all the tests referred on this post are done on 86Box, with the configuration files attached at the end of this post. If you don't find tests done on 86Box valuable, I totally understand, I will try to repeat all of them tomorrow on real hardware if I have enough time.

  • Alpha Storm: music plays fine. SFX initially plays fine too, but after a few seconds became stuck in a loop or dissappears.
  • Batman Forever: exactly same problem as Alpha Storm, but it could take a while to fail. Also, after installation the installer tries to determine if FMVs are playable and save the result on a FMV.INI file, but fails with a "DOS/16M error: [32] DPMI host error (possibly insufficient memory)" error. The FMV.INI file must be created manually for the game to run.
  • Chasm The Rift: silently crash back to prompt while loading csm.bin.

I've been also trying already working games, but this time using 3dfx acceleration patches, and found the following results.

  • Carmageddon: when installed in full installation mode (required for redbook audio to play), the game asks for the CD when selecting New Game on the menu (maybe some kind of regression? I'm pretty sure this worked before). Running the game in 640x480 software mode ("-hires" parameter) fails while loading, "FATAL ERROR: Sorry, but Carmageddon has run out of memory". Voodoo mode fails with "Run-time library initialization failure: DLL load aborted" error (both CARMAV.EXE and VOODO2C.EXE executables).
  • Tomb Raider 3dfx: statically linked executable for Voodoo 1 works OK. Dinamically linked executable for glide2x.ovl shows black screen at launch.
  • Battle Arena Toshinden 3dfx: statically linked executable for Voodoo 1 (the only one that exists) works fine. Beside that, I noticed that after installation, SSETUP.EXE must be run manually to configure sound, it can't be chained from the main SETUP.EXE.
  • Screamer 2 3dfx: same error as Carmageddon, "Run-time library initialization failure: DLL load aborted".
  • Screamer Rally 3dfx: same error as Sreamer 2, "Run-time library initialization failure: DLL load aborted".

It's incredible to see how complex this could be...