Description
Hi! I absolutely love the OPLxLPT concept.
Although it's possible to use such devices with hypervisors running DOS in a guest VM, the only way to currently do so is to route the emulated LPT port on the guest to a physical LPT port on the host. This works, but it would still require either adlipt to be loaded in the guest VM or games to be patched. If the functionality of adlipt could be handled at the hypervisor-level however, the guest could be presented with an emulated virtual Adlib (Gold) or Sound Blaster card (which most popular hypervisors can already emulate), only with the FM-part of such card being routed to an OPLxLPT device connected to a physical parallel port on the host machine, instead of that part being emulated in software. The hypervisor would then only have to emulate the SFX DAC of the sound card (in the case of anything more advanced than an Adlib card).
The advantage of this over running adlipt in the guest VM, other than not having to load the TSR, is that this would also work with protected mode games.
In the specific case of VirtualBox, this would be an ideal addition, since the existing Sound Blaster 16 emulation provided by VirtualBox does not emulate any FM chips, but only the SFX/DAC/DSP part.
VirtualBox allows for the development of so-called extensions, so this functionality wouldn't necessarily have to be offered upstream. Oracle requires contributions to be MIT-licensed so they can also use it in their closed-source products. For developers who are not a fan of that, developing this functionality as an extension would be an alternative solution for VirtualBox. I've looked a bit into developing extensions for VirtualBox and it is not documented very well, but with some help I'd like to give it a shot. Maybe we can work on it together?
As for QEMU, I've also found this pending pull/merge request for something like this in QEMU by @vincentbernat, but the last reply/activity in that thread is from over 2 years ago. Also at first glance it appears to be for the OPL2LPT only. There is no mention of the OPL3LPT in that patch. Perhaps it's time to dust this off?
Support for this in VMware would be nice too, but personally I'm biased towards improving open source software over closed source software.
Thanks for considering, and thanks to everyone reading this who would like to help with this.