VOGONS


uCDD - virtual drive with Redbook audio for DOS

Topic actions

Reply 20 of 23, by vorvek

User metadata
Rank Newbie
Rank
Newbie
davidmorom wrote on Yesterday, 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 23, 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 23, 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 23, 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!