Skip to contentSkip to conversation

sound support (Re: XMS problem with Aladdin demo)

DISCUSSION Stas Sergeev 3 participants 8 messages Mar 8, 2005 – Mar 9, 2005

lore
Share & tools
lore
#0 lore raw

Hello.

Quoted 3 lines · Julius Schwartzenberg
Quoted 2 lines

http://www.geocities.com/SiliconValley/Circuit/5426/dosemu.html
something we don't want to have.

This patch seems pretty neat.

Please note: this patch includes the linux kernel module, not only the dosemu modifications. This is needed to drive the DMA controller directly. You won't get it included into an official kernel - people from XFree tried that many times, this fails. Linus doesn't want to provide the DMA control to userspace I think, or maybe there wasn't a good implementation.
But people never give up:
http://www.ussg.iu.edu/hypermail/linux/kernel/0311.2/0107.html
http://www.bennee.com/~alex/software/kernel/index.php
The DMA access might be usefull for dosemu, but not for sound. It is good for driving some legacy hardware.

Quoted 2 lines

Is there any chance that at least OPL3
support could be added in such a way to Dosemu?

OPL3 doesn't need DMA. It doesn't actually even need an interrupts. I see no reasons why the one can't simply open an access to the OPL3 ports for dosemu and it wont work. Have you tried?

#1 lore raw
Quoted 8 lines · Stas Sergeev
Quoted 3 lines

Is there any chance that at least OPL3
support could be added in such a way to Dosemu?

OPL3 doesn't need DMA. It doesn't actually even need an interrupts. I see no reasons why the one can't simply open an access to the OPL3 ports for dosemu and it wont work. Have you tried?

If you have the hardware, this works fine. However, dosemu must be started as root.

Signature · 1 line
Ryan Underwood, <[email protected]>
#2 lore raw

Ryan Underwood schreef:

Quoted 12 lines · Stas Sergeev
Quoted 9 lines
Quoted 3 lines

Is there any chance that at least OPL3
support could be added in such a way to Dosemu?

OPL3 doesn't need DMA. It doesn't actually even need an interrupts. I see no reasons why the one can't simply open an access to the OPL3 ports for dosemu and it wont work. Have you tried?

Quoted 3 lines

If you have the hardware, this works fine. However, dosemu must be started as root.

Cool, I've just got this to work!
It doesn't seem to work fully though.
I've added this to my dosemu.conf:
$_ports=" device /dev/snd/seq range 0x388 0x38b"
I'm using a YMFPCI chip which seems to contains an OPL3.
Wacky Wheels seems to be able to play 'some' stuff, but only if I run it after letting pmidi play a midi file. Wolfenstein 3-D doesn't seem to work though and after running Wolfenstein, I need to run pmidi first to be able to get Wacky Wheels to do something again. In Wacky Wheels, I only seem to hear the some instruments (sound like the same ones pmidi used to play the file).
There is also an error printed about the adlib emulation conflicting with the ports setting, (but it seems that I can ignore that).
Any idea why it is only 'half' working?

Thanks,
Julius

#3 lore raw
Quoted 15 lines · Julius Schwartzenberg

Cool, I've just got this to work!
It doesn't seem to work fully though.
I've added this to my dosemu.conf:
$_ports=" device /dev/snd/seq range 0x388 0x38b"
I'm using a YMFPCI chip which seems to contains an OPL3. Wacky Wheels seems to be able to play 'some' stuff, but only if I run it after letting pmidi play a midi file. Wolfenstein 3-D doesn't seem to work though and after running Wolfenstein, I need to run pmidi first to be able to get Wacky Wheels to do something again.
In Wacky Wheels, I only seem to hear the some instruments (sound like the same ones pmidi used to play the file).
There is also an error printed about the adlib emulation conflicting with the ports setting, (but it seems that I can ignore that). Any idea why it is only 'half' working?

No. The only thing I can think of is that you need the range 0x220-0x223 or 0x228-0x229 as well.

Signature · 1 line
Ryan Underwood, <[email protected]>
#4 lore raw
In reply to Julius Schwartzenberg

More reply:

Quoted 3 lines · Julius Schwartzenberg
Quoted 3 lines

If you have the hardware, this works fine. However, dosemu must be started as root.

PS. Or sudo.

Quoted 5 lines

Cool, I've just got this to work!
It doesn't seem to work fully though.
I've added this to my dosemu.conf:
$_ports=" device /dev/snd/seq range 0x388 0x38b" I'm using a YMFPCI chip which seems to contains an OPL3.

Yes, these chips do have a real OPL3, but must be enabled by the PCI configuration. Since you are using this for MIDI seq, it is likely the case. But the ALSA OPL3 driver may be using MMIO access and not PIO. Check your /proc/ioports to see where ALSA claims the OPL3 ports actually exists.

You can also enable IO-tracing for all of the mentioned ranges (0x220-0x223, 0x228-0x229, 0x388-0x38b) to see where the app tries to write OPL commands to. If it is writing to the wrong range relative to the real hardware, it's possible to redirect that access. Redirected access would be slower but with OPL this doesn't make much difference since there is so little I/O traffic.

Signature · 1 line
Ryan Underwood, <[email protected]>
#5 lore raw

Ryan Underwood schreef:

Quoted 9 lines

More reply:

Quoted 2 lines · Julius Schwartzenberg
Quoted 2 lines

If you have the hardware, this works fine. However, dosemu must be started as root.

PS. Or sudo.

My Dosemu owned by root already has u+s. I thought that was about the same as running as root, but that indeed doesn't do.

Quoted 13 lines
Quoted 5 lines

Cool, I've just got this to work!
It doesn't seem to work fully though.
I've added this to my dosemu.conf:
$_ports=" device /dev/snd/seq range 0x388 0x38b" I'm using a YMFPCI chip which seems to contains an OPL3.

Yes, these chips do have a real OPL3, but must be enabled by the PCI configuration. Since you are using this for MIDI seq, it is likely the case. But the ALSA OPL3 driver may be using MMIO access and not PIO. Check your /proc/ioports to see where ALSA claims the OPL3 ports actually exists.

Quoted 6 lines

You can also enable IO-tracing for all of the mentioned ranges (0x220-0x223, 0x228-0x229, 0x388-0x38b) to see where the app tries to write OPL commands to. If it is writing to the wrong range relative to the real hardware, it's possible to redirect that access. Redirected access would be slower but with OPL this doesn't make much difference since there is so little I/O traffic.

In /proc/ioports the OPL3 is only listed at 0388-038b, which is why I set up that port range in Dosemu. The other ranges you mention to seem not to be used. Here is the full output of catting /proc/ioports:
http://haar.student.utwente.nl/~julius/ioports-laptop
I believe Wacky Wheels and Wolfenstein 3-D worked without problems when I ran them without Linux/Dosemu in DOS, so the hardware seems to be capable.

Thanks,
Julius

#6 lore raw
Quoted 4 lines · Julius Schwartzenberg
Quoted 2 lines

PS. Or sudo.

My Dosemu owned by root already has u+s. I thought that was about the same as running as root, but that indeed doesn't do.

It should be similar. With sudo, dosemu can tell that euid!=uid and when it doesn't need root anymore, drops the privileges.

Quoted 6 lines

In /proc/ioports the OPL3 is only listed at 0388-038b, which is why I set up that port range in Dosemu. The other ranges you mention to seem not to be used. Here is the full output of catting /proc/ioports:
http://haar.student.utwente.nl/~julius/ioports-laptop
I believe Wacky Wheels and Wolfenstein 3-D worked without problems when I ran them without Linux/Dosemu in DOS, so the hardware seems to be capable.

I just have this nagging suspicion that Wolf3D uses 0x220-0x223, but I could be wrong. IIRC, Wolf3D also uses the strange SBPro mixer setting for stereo digital audio. I'll try this myself later on (my laptop has a OPL3).

Signature · 1 line
Ryan Underwood, <[email protected]>
#7 lore raw
Quoted 3 lines · Ryan Underwood

I just have this nagging suspicion that Wolf3D uses 0x220-0x223, but I could be wrong.

Yep, I'm wrong, according to the Wolf sources:
#define alFMStatus 0x388 // R
#define alFMAddr 0x388 // W
#define alFMData 0x389 // W

Signature · 1 line
Ryan Underwood, <[email protected]>