VOGONS


First post, by tpowell.ca

User metadata
Rank Member
Rank
Member

This TSR will allow you to change the output mode of the Sound Blaster Pro card (and compatibles) before and during playback (in games and demos).
It assumes the card is set to IO port 220h.

The shortcut keys are as follows:

  • F9 = Mono + Filter ON
  • F10 = Stereo + Filter ON
  • F11 = Mono + Filter OFF
  • F12 = Stereo + Filter OFF

Keep in mind that the ONLY cards that I am aware of that support the user-defeatable output filter are the genuine Sound Blaster Pro and the Yamaha YMF71x cards.
The STEREO / MONO mode change should be applicable to all cards.
See Yamaha YMF71x SB Pro Mixer Bug Issue Fix for more info on tuning the Yamaha card's lowpass filter characteristics.

I wrote this TSR back in 1998 in Borland C++ 3.1, but cannot seem to find the sourcecode.

The TSR was successfully tested on a modified YMF719 and a SBPro CT1600.

Enjoy!

Attachments

  • Filename
    FILTER.EXE
    File size
    6.77 KiB
    Downloads
    47 downloads
    File comment
    FILTER v1.0
    File license
    Fair use/fair dealing exception
  • Merlin: MS-4144, AMD5x86-160 32MB, 16GB CF, ZIP100, Orpheus, GUS, S3 VirgeGX 2MB
    Tesla: GA-6BXC, VIA C3 Ezra-T, 256MB, 120GB SATA, YMF744, GUSpnp, Quadro2
    Newton: K6XV3+/66, AMD K6-III+500, 256MB, 32GB SSD, AWE32, Voodoo3

Reply 1 of 7, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t
tpowell.ca wrote on 2023-01-12, 16:23:

Keep in mind that the ONLY cards that I am aware of that support the user-defeatable output filter are the genuine Sound Blaster Pro and the Yamaha YMF71x cards.

Nice work! Thanks for making this utility.

BTW, did you ever try turning off the filter on an OPTi or an ESS card? Or is it hardcoded to always stay on there?

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi

Reply 2 of 7, by tpowell.ca

User metadata
Rank Member
Rank
Member
Joseph_Joestar wrote on 2023-01-14, 06:26:

Nice work! Thanks for making this utility.

BTW, did you ever try turning off the filter on an OPTi or an ESS card? Or is it hardcoded to always stay on there?

Thanks Joseph
So I ran some more tests and unfortunately the TSR had limited success with different cards.
Many do not respect the CT1345 mixer registers in read or write.

The Yamaha YMF71x cards and genuine Creative Sound Blaster Pro cards support the TSR 100%.
The ESS688 and OPTi 82C929A cards do NOT work at all. These cards implement the output filter like a Sound Blaster 16, and it is not defeatble.
The CMI8330/HT1869V+ chips only support changing the MONO/STEREO mode.
The Crystal CS4237B chip (such as Orpheus) only support changing the MONO/STEREO mode when NOT playing audio (pause playback first or switch modes between sound effects).

I'll continue testing on other cards.

Last edited by tpowell.ca on 2023-01-16, 00:49. Edited 1 time in total.
  • Merlin: MS-4144, AMD5x86-160 32MB, 16GB CF, ZIP100, Orpheus, GUS, S3 VirgeGX 2MB
    Tesla: GA-6BXC, VIA C3 Ezra-T, 256MB, 120GB SATA, YMF744, GUSpnp, Quadro2
    Newton: K6XV3+/66, AMD K6-III+500, 256MB, 32GB SSD, AWE32, Voodoo3

Reply 3 of 7, by Gmlb256

User metadata
Rank l33t
Rank
l33t

Thanks for this handy tool! 😀

Two downsides though: Although it is a very unlikely scenario, there isn't a way to check if the TSR is installed after running the application, meaning that it can be loaded many times until it runs out of conventional memory. The other one is that it can't be uninstalled.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 4 of 7, by tpowell.ca

User metadata
Rank Member
Rank
Member
Gmlb256 wrote on 2023-01-15, 19:46:

Thanks for this handy tool! 😀

Two downsides though: Although it is a very unlikely scenario, there isn't a way to check if the TSR is installed after running the application, meaning that it can be loaded many times until it runs out of conventional memory. The other one is that it can't be uninstalled.

You are absolutely correct.
I am however having a very hard time finding useful information these days on writing TSRs in C, but I'll keep looking.
If anyone has an example program or references I can use.

Thank you

  • Merlin: MS-4144, AMD5x86-160 32MB, 16GB CF, ZIP100, Orpheus, GUS, S3 VirgeGX 2MB
    Tesla: GA-6BXC, VIA C3 Ezra-T, 256MB, 120GB SATA, YMF744, GUSpnp, Quadro2
    Newton: K6XV3+/66, AMD K6-III+500, 256MB, 32GB SSD, AWE32, Voodoo3

Reply 5 of 7, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t

Out of curiosity, would it be possible to implement a "Reverse Stereo" hotkey? For games which don't have that option in setup.

Or is that functionality something that's dependent on the game's own sound driver?

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi

Reply 6 of 7, by tpowell.ca

User metadata
Rank Member
Rank
Member
Joseph_Joestar wrote on 2023-01-17, 19:40:

Out of curiosity, would it be possible to implement a "Reverse Stereo" hotkey? For games which don't have that option in setup.

Or is that functionality something that's dependent on the game's own sound driver?

Interestingly enough, just toggling the mono/stereo modes repeatedly can reverse the stereo on some cards (Yamaha, Creative and CMI8330/MK83330).
For the other cards, it's really trial and error; mostly error.

Just hit F11 and F12 back and forth a few times to test with your card.
The result is not predictable and so cannot be programmed in. Its all a question of timing the command.

  • Merlin: MS-4144, AMD5x86-160 32MB, 16GB CF, ZIP100, Orpheus, GUS, S3 VirgeGX 2MB
    Tesla: GA-6BXC, VIA C3 Ezra-T, 256MB, 120GB SATA, YMF744, GUSpnp, Quadro2
    Newton: K6XV3+/66, AMD K6-III+500, 256MB, 32GB SSD, AWE32, Voodoo3

Reply 7 of 7, by wbahnassi

User metadata
Rank Member
Rank
Member
tpowell.ca wrote on 2023-01-16, 00:51:
You are absolutely correct. I am however having a very hard time finding useful information these days on writing TSRs in C, but […]
Show full quote
Gmlb256 wrote on 2023-01-15, 19:46:

Thanks for this handy tool! 😀

Two downsides though: Although it is a very unlikely scenario, there isn't a way to check if the TSR is installed after running the application, meaning that it can be loaded many times until it runs out of conventional memory. The other one is that it can't be uninstalled.

You are absolutely correct.
I am however having a very hard time finding useful information these days on writing TSRs in C, but I'll keep looking.
If anyone has an example program or references I can use.

Thank you

I guess install an interrupt handler on TSR load, then you can query it to determine TSR presence and to also signal to the loaded TSR to unload itself.