Jorpho wrote on 2020-05-13, 21:43:
digger wrote on 2020-05-12, 18:21:
So the problem with most purely software-based Sound Blaster emulation solutions is that they only work with real-mode games, since it requires trapping I/O port access.
Which ones are you thinking of, specifically?
Basically the same ones that Jo22 mentioned earlier:
Jo22 wrote on 2020-05-13, 06:56:
Something like this already exists, albeit for Real-Mode titles only (but links into EMM386 which uses V86, similat ro DOS/4GW). […]
Something like this already exists, albeit for Real-Mode titles only (but links into EMM386 which uses V86, similat ro DOS/4GW)..
- Virtual SoundBlaster
I mean, other than purely software-based emulation, the only other way I know is hardware-assisted emulation, such as how the Gravis Ultrasound cards worked with the SBOS TSR. The GUS basically monitored the relevant I/O ports for Sound Blaster emulation in hardware, and left the actual emulation of the DSP to SBOS to do in software. (Again, if I'm incorrect, feel free to correct me.)
This way, protected mode games would work as well, since it wouldn't require games to run in V8086 mode in order to be able to handle the I/O port trapping.
Another example of hardware-assisted emulation I believe would be the VIAFMTSR utility that enabled Adlib/OPL3 FM emulation on certain VIA southbridges that already had an ability in hardware to emulate Sound Blaster Pro cards.
The problem with hardware-assisted Sound Blaster emulation is that any hardware-assisting involving ISA DMA would have to be done on an actual ISA card. Although Tiido has been looking into some sort of ISA DMA handling through use of the LPC bus on some motherboards, but that remains a work in progress. Also, the LPC bus is expected to be dropped in new motherboard chipsets soon as well (and may already be gone in the latest motherboards, I'm not sure?).
I'm also aware of certain emulators that leveraged certain ISA DMA emulation features through PCI (DSDMA and such, that stuff was called???), but I believe this required the right combination of PCI sound card chipset and motherboard chipset for that to work properly, and it ceased to work in newer motherboard chipsets.
And then there is the possibility of having a hardware-assisted hypervisor on modern CPUs emulating ISA sound cards for a host VM running DOS "natively" (as in: without emulating an entire CPU). But ideally, we would want such a hypervisor to pass through the VGA card for direct access, to have an as "native" feeling experience as possible (and the performance to match). I'm currently not aware of any hypervisors that can pass through a VGA card to a DOS host, while offering high quality Sound Blaster emulation at the same time. The Sound Blaster emulation in both VirtualBox and KVM/QEMU is not the best. I've read it was recently improved in VMWare, but I like my hypervisors open source, thank you very much.
Are there any emulation strategies I may have omitted?