ericvids wrote on 2022-07-07, 15:09:
Handling more than 1 PCM sound at the time will definitely require real-time mixing; as you said, Gravis Ultrasound support for hardware-based mixing (I believe there's a mod called "UltraWolf" for this, which I have never tried because I never had a GUS), or a DMX-like software mixing solution (not sure if anyone has done this on wolf3d specifically). I don't know when/if I will be able to work on doing one or the other though... When/If I do get around to it, it would entail gutting out the id sound code in its entirety, which also means refactoring the new MPU code with it...
Never heard of that mod before! I just watched a video of it and though it supports several sounds at once the pitch is altered. It's a curiosity i guess. But yeah i understand the difficulties of adding GUS native support. The reason i'm mentioning it is because i honestly think this is the best DOS source "port" of Wolf3D ever. It really becomes a good base to improve on the game, specially considering the music in General MIDI is sounding great, and the WASD + Mouse implemented controls work very well. I won't even mention the in game map option which is also fabulous.
So that's basically it, since the audio, in the music department got such a good treatment, i was wondering if it would be worth to improve on the game further and give it anothe rboost, this time on the PCM side. But yeah, i understand the difficulties.
ericvids wrote on 2022-07-07, 15:09:
The problem I foresee for software mixing is whether a 286 can still handle the load. Apart from the inherent speed limitations, it will be limited to 16-bit x86 code, and thinking in 20-bit segment-offset memory is a pain, AND we also need to preserve compatibility with TSRs that emulate the MPU.
Hmmm, i find it admirable that you still want to keep it playable on a 286 but honestly, with these kinds of "ports" that enhance on a game chances are its only going to get worse on those machines, unless you use a better C compiler than the one that was originally used, or maybe use inline assembler for specific critical parts of the code.
All in all, this is great work. Whether you keep improving on it or not, this is pretty amazing already.