by Bret » Mon Oct 21, 2019 6:28 am
I don't have any of those games installed, so can't help with any of them specifically. But crashes are almost always a conflict of some sort -- usually either memory or IRQ. It's unlikely you have an actual memory address conflict, though that is possible if your memory manager isn't configured properly. The USBUHCI drivers don't use DMA like the sound hadrware does, so that's unlikely (though not impossible) for it to be the conflict. However, the PCI hardware (which is what the USB controllers use) accesses memory using a method called bus mastering, which is different than how DMA accesses memory (which uses a special hardware chip). The programs themselves access memory through the CPU which is different than how either DMA or PCI does it. All of those methods must be coordinated properly to make sure memory doesn't get screwed up. And when you have a memory manager (like EMM386) in the mix you also have things like Virtual DMA that can mess things up even more.
A couple of things to try. First of all, make sure that the USB controllers are not using IRQ 5 like your sound controller is using. You can verify this with USBUHCI(L) or USBHOSTS.
The other thing to try right up front would be a different memory manager. For example, if you're using MS HIMEM.SYS/EMM386.EXE, try a different/updated version of those (from a newer version of DOS), or try JEMM, or try other combinations of memory managers -- there are a few different ones available from the FreeDOS site.
Another possibility is that your just don't have enough memory. You say the programs run in real mode, but if you have a memory manager installed you may actually be running in V86 (Virtual 80x86) mode even though you think you're running in real mode. If you don't have a memory manager installed and USBUHCI(L) is installed in regular (conventional) memory, it may be using enough memory that your games simply don't have enough memory left to run, in which case you may need to install memory manager so you can free up some conventional memory. At least theoretically, the game should quit with an error message instead of crashing if it doesn't have enough memory, but I'm not sure how those games work.
So, play around with and without different memory managers and see if that helps at all.