Reply 20 of 110, by digger
- Rank
- Oldbie
Cacodemon345 wrote on 2025-01-27, 14:28:I probably can add Munt emulation, but I'm not sure about adding Tandy emulation.
I will think about the latter later.
I appreciate that! Shall I open a GitHub issue for munt support?
Tandy emulation is a bit less valuable, but it could be useful for games in which this is the best supported sound device. Those tend to be games that were released specifically with support for the PCjr and/or Tandy 1000 computers, before the Adlib and Sound Blaster cards became widely adopted and supported.
However, games from this earlier era still require patches in order for them to...
- ...enable 3-voice audio on systems other than the IBM PCjr and/or Tandy 1000
- ...enable this in combination with EGA or VGA graphics modes, without also automatically switching to the specific 16-color graphics mode that only the PCjr and Tandy 1000 systems supported
- ...support the newer I/O address (1E0h) that Tandy used for the 3-voice sound synth in later Tandy 1000 models, since IBM later repurposed the original I/O address (C0h) for the second DMA controller in the PC/AT (286)
(I believe there are many patches already floating out there to fix these issues in various games.)
So yeah, the "cost/benefit analysis" of implementing Tandy support (the number of games that would benefit from it versus the effort to implement support for it) is likely less than that of adding Roland MT-32/CM-32 support.
But you wouldn't have to start from scratch. And it's also likely a lot more trivial to emulate than DMA DAC or MIDI devices.
You can likely copy code from the PicoGUS project, which has already implemented Tandy emulation. And just support the later I/O address for it (1E0h), since I believe patches are already floating out there to get games to work on that port. Although on the other hand, the second DMA controller isn't used for anything anymore on modern systems, so if you were to trap and emulate the original Tandy 3-voice I/O address (C0h) that the PCjr and Tandy 1000 used and that the older games depend on, the only potential conflict you'd have would be with a virtual Sound Blaster 16 if VSBHDASF was emulating that together with the Tandy device. You could add logic to emulate Tandy on the original I/O address only if a Sound Blaster Pro or WSS card were emulated beside it, and emulate it only on the newer port if the emulator is configured to emulate a Sound Blaster 16 including high DMA.
Thanks for considering both features! I'll just create separate GitHub issues for both these features when I get home. You can of course just close the Tandy one if you decide not to support it.