fraggle
Filled with the code of Doom

Posts: 6607
Registered: 07-00 |
Super Jamie said:
I will have a play around with this as well, you've got me curious. I'm gonna try find one of those Yamaha PCI cards too.
fraggle, should OPL-branch output correctly on an 8738 under Linux with OPL enabled in modprobe? If so, I assume it will work correctly with a true SB16 as well?
Yes and yes. My normal card is a YMF724.
This whole CMI card thing is interesting though. From the driver source it seems pretty clear that older revisions support OPL and newer ones don't. Porsche Monty's card obviously supports it because it works under DOS. So it looks like you need both the right card AND the right driver to get it to work.
Maes said:
You mean there is no way to use the OPL chips in a direct register-banging mode? Wouldn't surprise me under XP/2000/Vista. I recall there was an utility called PortTalk that should allow for that, but I never got it to work right with an AWE64.
No, it's more complicated than that. The C-Media CMI8738 and Yamaha YMF724 both support OPL in hardware, but it has to be enabled by turning on a configuration flag in a specific PCI register on the card. You need to configure the driver to do that, and once you have, you can write to port 0x388 just like there's a real adlib/SB there.
Under Linux you can enable it by setting options to the driver modules in your modprobe.conf file. The Windows XP driver for the YMF724 seems to turn it on by default. The Windows XP driver for the CMI8738 doesn't, and there doesn't seem to be any way to tell it to.
The I/O port permissions issue is a completely separate issue and one that I'm aware of. Chocolate Doom on NT-based systems (XP etc) will load a driver called ioperm.sys that can enable access to the OPL I/O port. It essentially does the same thing as PortTalk. I didn't use PortTalk because the license was offensively draconian.
Porsche Monty said:
For all I know there's no way to "enable" OPL in XP, drivers plainly and simply have to support it, which doesn't seem to be the case here so all there's left is figure out a way to talk directly to the hardware, like a driver would, and quite honestly I don't see anybody signing up for it.
What a shame :(
The really frustrating part is that it's literally just a few bits that need to be turned on - bit 3 (VOICE_EN) in function control register 1 and bit 19 (FM_EN) in the miscellaneous control register. If my card had OPL on it, I might have tried reverse engineering the driver to see if it could be patched to turn the appropriate bits on. As it stands, I don't have any way to test it though.
|