# VDMSound

VDMSound was an open-source (licensed under GPLv2) emulator of legacy sound card devices, designed to allow video games and other applications written for MS-DOS to run on the Microsoft Windows NT/2000/XP/95/98/Me operating systems. Its author is Vlad Romascanu.

## Features

VDMSound emulates Adlib and Sound Blaster cards (standard, pro and 16), parallel port DAC, and an MPU 401 MIDI (UART-mode) interface. It also provides joystick support.
The official VDMSound builds runs on Windows NT/2000/XP. A Windows 95/98/ME port was contributed by Chris Chua.

### Sound recording

VDMSound allows the recording of all captured sound and music to WAV and MID files.

### User mappings

VDMSound allows the user to provide custom mappings for MIDI instruments as well as for joystick buttons and axes.
* MIDI mappings are particularly useful when the type of MIDI device supported by a game (e.g. MT-32) is different from the type of hardware or software device actually present on the system (e.g. Microsoft GS Wavetable SW Synth.)
* Joystick mappings are needed principally for DOS-based flight simulation applications, when matching yokes, throttles and pedals to the simulator's expected configuration.

### Graphical user interface

As of version 2.1.0 beta, VDMSound also includes a Wizard graphical user interface (integrated as a Windows shell extension), accessible by right-clicking on any MS-DOS executable.

## Design

As opposed to DOSBox, which emulates an entire x86 personal computer with DOS, VDMSound emulates only the sound hardware. All other aspects of DOS emulation are managed natively by the Windows operating system's 16-bit subsystem (NTVDM) through virtualization. This results in reduced system load (and thus games will run faster than under DOSBox on the same hardware specifications), at the expense of reduced compatibility (see limitations below.)

## Limitations

The Windows operating system's 16-bit subsystem is lacking in several areas which directly or indirectly affect VDMSound emulation:
* Incomplete DPMI support in Windows NT/2000/XP results in a number of games not starting or crashing randomly when they communicate with the emulated sound card
* Improper interrupt emulation in Windows NT/2000 (but not XP) results in some games hanging when they communicate with the emulated sound card (requiring patching via CLI2NOP.)
* Improper PIC emulation in Windows results in games not being able to use normal (or intelligent) mode, limiting VDMSound's MPU-401 emulation support to UART-mode only.
DOSBox does not rely on the Windows 16-bit subsystem and is thus not subject to these limitations.

## History

VDMSound started as a private project in 1998, in Montreal, its motivating purpose being that of capturing in-game MIDI music through software while taking advantage of Windows NT's 16-bit subsystem virtualization. It became open-source and moved to SourceForge after a full rewrite in the early spring of 2001. It was discontinued in early 2004 (last checkin occurred on 2004-02-14), when additional improvements in emulation were no longer possible due to limitations in the Windows 16-bit subsystem. The sound emulation code from VDMSound has since been integrated into DOSBox.
VDMSound was not compatible with Windows Vista, making the project obsolete. The current version, 2.1.0 beta, will remain the final version.