### Virtual drives

Preface:

When the first Win32 games appeared, the PC architecture already included a CD drive. Then, a very common game structure was to install the program and a few critical data on the HD and leave all music (in mixed-mode CD-ROMs) and other large multimedia data on the CD. This way, checks for the presence of the CD in the drive were a very practical and used DRM technique.

Nowadays, though some of these old games could run on modern platforms, either natively or with support of compatibility shims, emulators or tools like DxWnd, they face the problem of the lack of a CD drive: modern computers are more and more powerful, light and thin, so a CD drive is almost always sacrified on any portable pc. Another problem of these games is that they often relied on the possibility to access the first (often unique) HD on the root folder "C:\" and therefore they didn't consider the possibility of quite longer pathnames of files moved to the user's area of a modern file system. Some games don't work if not installed in a "C:\" subfolder, but this possibility is now usually excluded for security reasons. Here comes DxWnd with a set of features that will help bypassing these two problems by building virtual (or fake) CD and HD drives. It should be remarked that these features work at the window system libraries level (mostly kernel32.dll) and don't deal with more sophisticated copy protection mechanisms that were developed soon after, based on trickier side effects like the detection of CRC errors on disk or even stronger techniques. In these cases, a good CD drive emulator can provide a more precise simulation. But neverthless in many cases the fake devices will prove useful to transfer the files from a CD to your HD and build a game setting with all features, no cracked executable and requiring no CD or CD drive to run properly. This may also work togerther with DxWnd CD audio tracks' emulations to handle CD music in addition to the CD file system.

Tutorial:

This tutorial will help to build your own game settings.

1: The first step is to install the game on the HD, possibly chosing the option to install the minimum set of files: since the virtual CD is on HD, there's no practical advantage to place the same files on HD twice. Also, take note of the CD label, it may prove useful later (for instance, "Drift: When Worlds Collide" checks for the CD label equal to "DRIFT"). 2: Then, configure DxWnd to run the game the way you prefer, but still having the CD in the drive. You won't want to handle two problems at a time, so be sure that everything works fine before trying to virtualize the CD. 3: As a third step, create a folder for the virtual CD files (a "cd" subfolder of the game install directory will be fine in most cases) and copy the content of the whole CD there. Then configure the virtual CD in DxWnd (if you picked the suggestion, the path could be abbreviated as "?\cd\", where "?" stands for the game folder). It is strongly recommended that the virtual drive letter DOES NOT MATCH that of an existing drive, or there could be some confusion. 4: Now, remove the physical CD (or stop the CD emulation, in case you mounted a virtual CD) and try running the game. It may work, but it also may not. 5: Usually CD checks are placed in the program code executed BEFORE the creation of the first window, so in the case of any failure, set an early hook mode (for instance, "Inject suspended process"). The game may also check for the CD label, try setting that value in the "CD label" field and try again. 6: Some games (for instance, "Sentinel Returns") may perform a CD check using MCI calls to query the number and type of CD tracks. In this case, it would be necessary to extract the audio tracks and enable CD audio emulation (see the dedicated tutorial). 7: If the game still doesn't start and asks for the presence of the game CD, set the log options enabling these (and only these!) flags: "Overwrite", "DxWnd hacks", "System libs", "Debug". If you enabled CD audio emulation, also check the "Sound" flag. Run the game again and kill it (with DxWnd kill command) at the no-CD dialog box, then read the "dxwnd.log" file: there could be some clue inside about what's wrong. In any case, post the logfile on the SourceForge portal, gho will be happy to read and try to make it work.

CD charger:

If the program needs to access files from different CDs you can use the "CD charger" panel to switch the CD inserted in the virtual drive. If the program configuration also includes virtualization of the CD audio, the virtual CD audio tracks will be updated accordingly.

The switch will take place every time a new pathname will be referenced, so unlike what would happen with real disks (or even with mounted ISO images), there is no risk of I/O errors on files when their CD is swapped out.