VOGONS


First post, by doshea

User metadata
Rank Member
Rank
Member

Here are my experiences with Sound Blaster emulation in DOS with some kind of generic FM801 clone I picked up in case they are useful to anyone else.

I tested this on an MSI "PM8M-V H"/"MS-7104 ver 3.0" motherboard with a VIA P4M800 + VT8237R Plus chipset. The BIOS offered no way to explicitly assign IRQs to slots, but I found that if I disabled many of the onboard devices in the BIOS settings and put the card in the slot furthest from the CPU it was assigned IRQ 5.

The board is labeled both "3DS801A" and "FM801A". I haven't been able to figure out who manufactured it.

3ds801a_top.jpg
Filename
3ds801a_top.jpg
File size
906.18 KiB
Views
1911 views
File license
CC-BY-4.0

My transcription of what is on the main chip:

ForteMedia
FM0801-A1
HG73C502AFB
9825 JAPAN

I note that it has pads for a 6-pin PC_PCI header.

3ds801a_bottom.jpg
Filename
3ds801a_bottom.jpg
File size
743.34 KiB
Views
1911 views
File license
CC-BY-4.0
3ds801a_bracket.jpg
Filename
3ds801a_bracket.jpg
File size
85.63 KiB
Views
1911 views
File license
CC-BY-4.0

The AC'97 codec chip which can't be identified properly from the photos above is a STAC9704T:

3ds801a_codec.jpg
Filename
3ds801a_codec.jpg
File size
598.13 KiB
Views
1911 views
File license
CC-BY-4.0

When I booted up Knoppix 7.2 (Linux) on it, it identified it as a "ForteMedia Xwave QS3000A" on the console during startup, and /proc/asound/cards says it is an "FM801-AS".

I couldn't get any audio output either in Knoppix or DOS, and eventually realised it needed some jumpers on JP12 (which is very close to the audio output jack) to select between "Line OUT" and "SPK OUT", with instructions shown below "JP11 MITS".

The Dos202.zip drivers from https://web.archive.org/web/20000620232801/ht … port/driver.htm, which are the same as the contents of the "DOS v2.02" directory in http://vogonsdrivers.com/getfile.php?fileid=1147&menustate=0, and the DOS drivers in the "VXD Q3D v2.05f" directory of the latter both seem to work equally well. I used INSTALL.EXE from the former and then tested later by copying over the DOS .EXE files from the VXD directory without actually installing anything in Windows.

Test results:
Prince of Persia: Fine apart from hanging notes
Wolfenstein 3-D: Digital audio was distorted, as if it was playing too slowly, and the volume was perhaps dropping in the middle of playback. Adding the /1 parameter to CFG801.EXE's command line and/or not loading the DOS801.EXE TSR seemed to help with the volume dropping out but I think the sound still seemed to be playing too slowly.
DOOM 1.9: Fine
Microprose Grand Prix 2: Audio kept cutting out (for a fraction of a second every 5-15 seconds or so) until I added the /1 parameter to CFG801.EXE's command line. Edit: can set to either Sound Blaster or Sound Blaster Pro.

Issues with the DOS drivers:

A confusing aspect of the /<number> parameters to CFG801.EXE to select the mode is that the setting is written to DOSGAME.CFG as DOSMode=<number> so the setting persists: if you reboot and don't pass a /<number> parameter next time you run it, rather than go back to default it'll use the last value you passed! Passing /0 restores it to default (autodetection).

Adding the /T parameter to the CFG801.EXE command line causes it to indicate what PCI chipset it detected. In my case it said "Can't find PCI Chipset Device!" and that it was defaulting to legacy 2 mode, whereas as noted above it turned out that legacy 1 mode was better for me.

I'm not sure what the DOS801.EXE TSR is for. When I didn't load it, all those games still worked the same. Is it only for cases where the card isn't assigned to an appropriate IRQ by the BIOS and the TSR needs to redirect it?

Sorry about the bad lighting in the photos!

Reply 1 of 14, by doshea

User metadata
Rank Member
Rank
Member
doshea wrote on 2022-01-10, 05:18:

Adding the /T parameter to the CFG801.EXE command line causes it to indicate what PCI chipset it detected. In my case it said "Can't find PCI Chipset Device!" and that it was defaulting to legacy 2 mode, whereas as noted above it turned out that legacy 1 mode was better for me.

Actually I used /t (lowercase) and I can see from disassembling it that that switch (but not the others) is case sensitive!

Reply 2 of 14, by doshea

User metadata
Rank Member
Rank
Member

The command-line parsing in CFG801.EXE is pretty bad. It seems that the only way you can get usage information from it is if you pass a valid /t option followed by an invalid option, e.g. "/t /?".

Here is complete lspci -nn output showing both the 3DS801A card and the system I tested it in:

00:00.0 Host bridge [0600]: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge [1106:0314]
00:00.1 Host bridge [0600]: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge [1106:1314]
00:00.2 Host bridge [0600]: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge [1106:2314]
00:00.3 Host bridge [0600]: VIA Technologies, Inc. PT890 Host Bridge [1106:3208]
00:00.4 Host bridge [0600]: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge [1106:4314]
00:00.7 Host bridge [0600]: VIA Technologies, Inc. CN700/VN800/P4M800CE/Pro Host Bridge [1106:7314]
00:01.0 PCI bridge [0604]: VIA Technologies, Inc. VT8237/VX700 PCI Bridge [1106:b198]
00:07.0 Multimedia audio controller [0401]: Fortemedia, Inc Xwave QS3000A [FM801] [1319:0801] (rev a0)
00:07.1 Input device controller [0980]: Fortemedia, Inc Xwave QS3000A [FM801] [1319:0801] (rev a0)
00:0f.0 RAID bus controller [0104]: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller [1106:3149] (rev 80)
00:0f.1 IDE interface [0101]: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE [1106:0571] (rev 06)
00:11.0 ISA bridge [0601]: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South] [1106:3227]
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation NV18 [GeForce4 MX 4000] [10de:0185] (rev a4)

Reply 3 of 14, by foxbat

User metadata
Rank Newbie
Rank
Newbie

Does this card work for you under Linux? I use Fedora Linux 36 with M4A785TD-V EVO mainboard now and card with such a chipset is detected by the system:

$ lspci
02:06.0 Multimedia audio controller: Fortemedia, Inc Xwave QS3000A [FM801] (rev b2)
02:06.1 Input device controller: Fortemedia, Inc Xwave QS3000A [FM801 game port] (rev b2)

but it does not work at all, dmesg shows:

$ dmesg
snd_fm801 0000:02:06.0: TEA575x radio not found
snd_fm801 0000:02:06.0: AC'97 0 does not respond - RESET
snd_fm801 0000:02:06.0: AC'97 0 access error (not audio or modem codec)
snd_fm801: probe of 0000:02:06.0 failed with error -13

The chipset says:

ForteMedia
FM801-AU
0038
H6315.00

AC97 IC says:

STAC9700T
LA2C09
9952

IMG-20220720-225629-HDR.jpg
IMG-20220720-225744-HDR.jpg
IMG-20220720-225720-HDR.jpg

Last edited by foxbat on 2022-07-26, 20:23. Edited 1 time in total.

Reply 4 of 14, by doshea

User metadata
Rank Member
Rank
Member
foxbat wrote on 2022-07-20, 23:31:

Does this card work for you under Linux?

I can't remember, but I think it did. I'll try to test it again sometime in the next week.

It might not be relevant, but what is the AC'97 codec chip on your card? Mine is the STAC9704T, yours looks similar but it's hard to read.

Reply 6 of 14, by doshea

User metadata
Rank Member
Rank
Member

I tested it with a different motherboard to my previous post - one with a VIA Apollo Pro 133A chipset - just for the sake of convenience, and it worked with Fedora 7 and Knoppix 7.2.

A weird issue I hit under Knoppix (and might have hit if I'd rebooted with Fedora 7) is that ALSA assigned a different order to the onboard audio vs. the 3DS801A between boots, so one time it was the default device and one time it wasn't. I actually failed to get the audio to work when it wasn't the default device, but I'm pretty sure that would just be because I needed to tell the aplay command to use a non-default device, and it hadn't occurred to me to do that until after I'd rebooted (and it coincidentally became the default device).

Reply 7 of 14, by foxbat

User metadata
Rank Newbie
Rank
Newbie

I was able to confirm that the card works at all. I run it on legacy P55 Pentium MMX 166MHz with MS5146 and Windows 98SE. Anyway the sound quality is really bad as it plays snatchy sound. I used drivers from Vogons downloads.

Reply 8 of 14, by tauro

User metadata
Rank Member
Rank
Member

Thanks for documenting all this information doshea !

I've been doing some tests with this card.

The best performance is attained by avoiding the DOS801.EXE TSR which I guess redirects to the desired IRQ, and that introduces some latency or pop sounds in the FX playback, and incompatibilities too (Prehistorik 2).

I'm using a board with the VIA 8235M southbridge, and once I make sure the card gets the IRQ 5 or 7, everything just works in DOS, only by loading CFG801.EXE and setting the BLASTER variable.

I can't understand why everything works so well, every game I tested has 100% perfect DOS compatibility and to my ears, a sound which is very close to the OPL3.

How does such a card+driver work so well on a motherboard without DDMA, PC-PCI, etc? How is it possible?

OTOH, I haven't had such a successful experience (yet) with motherboards which do have SiS chipsets (compatible with DDMA).

Investigations are still ongoing...

Reply 9 of 14, by doshea

User metadata
Rank Member
Rank
Member

I'm glad it was useful and that you had some success tauro!

I was actually wondering recently what else I might be able to get to work with this card, so I'd be interested to see a list of the games you tested it with, if you have time to share that.

Is your board identical to mine or just similar?

Reply 10 of 14, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
tauro wrote on 2023-11-20, 10:50:

How does such a card+driver work so well on a motherboard without DDMA, PC-PCI, etc? How is it possible?

interesting, I guess we need to look in CFG801.EXE assembler code and see what it's doing, because FM801 datasheets states things like:

Proprietary Logic for Real DOS SoundBlaster Pro games support

DDMA, PC/PCI and ForteMedia’s own proprietary mode

So, maybe "ForteMedia’s own proprietary mode" is something like ESS TDMA (Transparent DMA), i.e. build-in i8237 DMA controller inside FM801 chip. What I mean is if CFG801.EXE is not doing any software emulation, then probably it sets some special ForteMedia's hardware mode similar to ESS TDMA. So, it's interesting, based on your experience, the CFG801.EXE be investigated and a definitive answer be given.

Reply 11 of 14, by mockingbird

User metadata
Rank Oldbie
Rank
Oldbie

Can you solder a header on the PC/PCI pads and test the SB-Link please... So far, the Yamaha cards are the only ones I know of that work with it. There is a single report here of success with an ESS Solo and SB-Link which I've not been able to replicate. It would be interesting to see what the story is with this card.

mslrlv.png
(Decommissioned:)
7ivtic.png

Reply 12 of 14, by tauro

User metadata
Rank Member
Rank
Member
doshea wrote on 2023-11-21, 09:52:

I'm glad it was useful and that you had some success tauro!

I was actually wondering recently what else I might be able to get to work with this card, so I'd be interested to see a list of the games you tested it with, if you have time to share that.

Is your board identical to mine or just similar?

It's very similar to foxbat's, but mine has been manufactured by Genius. Forté Media chip reads H6L02.00 and the AC'97 chip is a STAC9704T.

The volumes are too low in general for my taste, but satisfactory enough.

I check the default volumes with BTTR's SBMIX upon boot and they are: MASTER 9, WAVE 9, FM 9. Creative's SBP-MIX also reports 9 9 9 as the default volumes.

Do you understand how to set the volumes using VOLUME.CFG?

This is the default file:

[VOLCFG]
MasVol=0
PcmVol=0c0c
FmVol=0c0c
SurVol=0

I changed MasVol and SurVol to 3 and other numbers and it doesn't make any changes, SBMIX still reports 9/9/9 after a reboot. Also, what are the hex values 0c0c supposed to mean? What's SurVol?

The volumes can be set to 15 /w15 /f15 with SBMIX and that's as good as it gets.

With either SBP-MIX, SBP-SET or SBMIX I can't get the line-in and microphone volumes down to zero, they remain in 1. Probably a card incompatibility.

Since I'm not doing tests on Win9x for the time being, this is all I could find out. Maybe there are more volume options on Windows.

Reply 13 of 14, by tauro

User metadata
Rank Member
Rank
Member
doshea wrote on 2023-11-21, 09:52:

I was actually wondering recently what else I might be able to get to work with this card, so I'd be interested to see a list of the games you tested it with, if you have time to share that.

I tried lots of games and I didn't find any such problematic games like you did. I always used mode 0 (auto), and it seems that that defaults to /2. Probably /1 is more compatible (since GP2 runs OK with it).

Here's the md5sum for the CFG801.EXE I'm using:

083e97ced82da7abfd6508e2bfb852a3

Here's a list of a few games that I tried (all worked fine):

GODS
AITD
PRE2
LEMMINGS
PINBALL DREAMS 2
DUKE3D
DOOM_SE
WING COMMANDER 2
UGH
MK
WILLY
HOLMES
ENTITY
EPIC
F1GP
WAR2 Fine with DOS32A
JAZZ Excellent (disabling L1)
PRINCE2 Excellent - (Don't use SB PRO or FX stops working)
LSL1 and Sierra point and click games in general.
doshea wrote on 2022-01-10, 05:18:

Prince of Persia: Fine apart from hanging notes

Prince of Persia exhibits the same behavior, hanging notes at the end of FM playback. Otherwise fine.

doshea wrote on 2022-01-10, 05:18:

Wolfenstein 3-D: Digital audio was distorted, as if it was playing too slowly, and the volume was perhaps dropping in the middle of playback. Adding the /1 parameter to CFG801.EXE's command line and/or not loading the DOS801.EXE TSR seemed to help with the volume dropping out but I think the sound still seemed to be playing too slowly.

Your observations are correct here too. FX sounds are low pitched. I don't think they are playing slower than normal, just lower pitch.

>the volume was perhaps dropping in the middle of playback
>volume dropping out

According to my tests, this is DOS801.EXE's fault. If you avoid that TSR, performance improves. The only problem is the lower pitched FX sounds.

doshea wrote on 2022-01-10, 05:18:

Microprose Grand Prix 2: Audio kept cutting out (for a fraction of a second every 5-15 seconds or so) until I added the /1 parameter to CFG801.EXE's command line.

100% true! great find.
This proves mode 2 is the most compatible, apparently (I wonder what is the real difference).

mattw wrote on 2023-11-21, 12:41:

So, maybe "ForteMedia’s own proprietary mode" is something like ESS TDMA (Transparent DMA), i.e. build-in i8237 DMA controller inside FM801 chip. What I mean is if CFG801.EXE is not doing any software emulation, then probably it sets some special ForteMedia's hardware mode similar to ESS TDMA. So, it's interesting, based on your experience, the CFG801.EXE be investigated and a definitive answer be given.

You are probably correct! Unfortunately it's beyond my capabilities to reverse engineer the drivers.

Reply 14 of 14, by doshea

User metadata
Rank Member
Rank
Member
tauro wrote on 2023-11-21, 15:05:

It's very similar to foxbat's, but mine has been manufactured by Genius. Forté Media chip reads H6L02.00 and the AC'97 chip is a STAC9704T.

Thanks for the info, and thanks for the info regarding games too!

Do you understand how to set the volumes using VOLUME.CFG?

No, sorry, or if I figured it out I didn't make any notes!

What's SurVol?

Maybe it's "surround"? AC'97 supports surround sound (or at least https://en.wikipedia.org/wiki/AC%2797 says this), so I suppose it's possible for am FM801 card to have surround sound outputs. My card doesn't seem to have such outputs as can be seen in the photos.

With either SBP-MIX, SBP-SET or SBMIX I can't get the line-in and microphone volumes down to zero, they remain in 1. Probably a card incompatibility.

Strange! I saw https://github.com/volkertb/ich2player referenced on these forums at one point, and I noticed it is able to control AC'97 mixers, so I think at one point I wondered if it might be possible to borrow some code from it to make a DOS mixer for AC'97 cards, or maybe I actually saw some such DOS mixer software, I can't recall now. If such a thing exists it might be useful.

mattw wrote on 2023-11-21, 12:41:

interesting, I guess we need to look in CFG801.EXE assembler code and see what it's doing, because FM801 datasheets states things like:

I started looking at it with IDA once, but I can't recall why. I still have the database, I can check if I figured out anything useful from it if you'd like. I wasn't looking at this kind of thing though.

mockingbird wrote on 2023-11-21, 14:05:

Can you solder a header on the PC/PCI pads and test the SB-Link please

Sorry, I doubt I'll be able to find the time to try this kind of thing! In fact when I saw my original post in this thread I was surprised, because I forgot how much free time I had back then, that I could try out these things and write up my results 😁