VOGONS


First post, by Maxxarcade

User metadata
Rank Newbie
Rank
Newbie

I'm new to these forums, but I figured it would be a good place to start.

I have a couple 486 era systems with genuine Sound Blaster 16 cards (CT2910 and CT2230).

For some reason, Jazz Jackrabbit and Epic Pinball refuse to play at full quality on either card. It sounds like the sample rate is around 22Khz, despite the settings being on Ultra quality and SB16 in the setup. The problem persists with the setting on SB Pro too.

If I install a different card (such as a Yamaha YMF718-S) and use the settings for SB Pro and Ultra quality, both games sound great. Is this just a software bug in these particular games?

When these games were fairly new, I had always played them on my 386 with clone cards, such as Reveal SC400 and Yamaha. It was pretty disappointing to hear the real SB16 sound like crap when I finally got one all these years later.

Reply 1 of 40, by clueless1

User metadata
Rank l33t
Rank
l33t

Are there Bass/Treble settings on your SB16 that maybe are turned all the way down?

The more I learn, the more I realize how much I don't know.
OPL3 FM vs. Roland MT-32 vs. General MIDI DOS Game Comparison
Let's benchmark our systems with cache disabled
DOS PCI Graphics Card Benchmarks

Reply 2 of 40, by Azarien

User metadata
Rank Oldbie
Rank
Oldbie
Maxxarcade wrote:

For some reason, Jazz Jackrabbit and Epic Pinball refuse to play at full quality on either card. It sounds like the sample rate is around 22Khz, despite the settings being on Ultra quality and SB16 in the setup. The problem persists with the setting on SB Pro too.

This may be normal. I vaguely remember that I had a similar issue with Jazz Jackrabbit on AWE64.

Reply 3 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t

Yes, I've had this issue with Jazz Jackrabbit before too.

I was never able to fix it. And yes, I haven't had the issue on clones, only real SB16 cards and AWE64.

World's foremost 486 enjoyer.

Reply 5 of 40, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Interesting, I never noticed that issue back in the day when I played it (the shareware version).
Guess I was lucky beeing a PAS16 owner! 😁
Anyway, is there any recording of that issue available ?
I'm curious about that issue and wonder if it also affects the CT17xx models..

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 7 of 40, by chinny22

User metadata
Rank l33t++
Rank
l33t++

Epic titles were aimed at GUS soundcards more then soundblaster, which may be why it sounds muffled.
I've never really noticed it but then I had a SB16 back when I played these games new and on terrible speakers so anything sounds better these days

Reply 8 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t

Yeah, the underlying issue is that it restricts the sample rate to the lowest setting on a real SB16 no matter what you select, but it has no issue with clones.

World's foremost 486 enjoyer.

Reply 9 of 40, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Does this also happen in DOSBox or PCem ? Sorry, I know that question might be silly, but I have no comparison. So I have to ask. 😅

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 10 of 40, by Azarien

User metadata
Rank Oldbie
Rank
Oldbie
Jo22 wrote:

Does this also happen in DOSBox or PCem ? Sorry, I know that question might be silly, but I have no comparison. So I have to ask. 😅

You could compare DOSBox SoundBlaster vs DOSBox GUS.
Just remember to set both `rate=` and `gusrate=` to 44100.

Reply 11 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t

Not a silly question, but no, the behavior with DOSBox is the same as with clones; i.e. it works perfectly.

World's foremost 486 enjoyer.

Reply 12 of 40, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

I took recordings of One Must Fall and Epic PInball and Pinball Fantasies with a GUS, an SB Pro and a PAS16. With the Epic games, the SB Pro sounds terrible compared to the PAS16 and the GUS : http://nerdlypleasures.blogspot.com/2016/10/r … ultrasound.html

Someone commented on an IRC channel that the reason for this was because Epic MegaGames hated Creative Labs for dominating the market and shutting out their beloved GUS, so they took revenge by making their games sound terrible on true CL hardware while not sounding terrible on the clones. If this was the case there should be code somewhere in these programs that detects real CL hardware and could conceivably be patched out. I find the idea a bit farfetched, but there is some support in the empirical evidence that, for whatever reason, their drivers don't like CL products. Honestly, I did not record the SB Pro through a tin can on a string, but it sure sounds that way!

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 13 of 40, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Thank you very much Great Hierophant! Your article is excellent, as usual! 😁
I'd just want to add that the PAS16 recording is perhaps a bit overdriven.
This happens easily, because the mixer has an extreme loud volume default setting.
Changing it to something lower may give you clearer audio.
Sample: PAS SET VOLUME TO 70 IN 2 SECONDS

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 16 of 40, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

Cool! I love your audio system repair videos, both pro and consumer.

Also, welcome to the forum. We have a few threads on stuff like recapping, bad vs good PSU design, etc. I think based on your vids and the skill level you demonstrate, your experience and opinions would be especially appreciated!

All hail the Great Capacitor Brand Finder

Reply 17 of 40, by stargo

User metadata
Rank Newbie
Rank
Newbie

Hi,

Maxxarcade wrote:

For some reason, Jazz Jackrabbit and Epic Pinball refuse to play at full quality on either card. It sounds like the sample rate is around 22Khz, despite the settings being on Ultra quality and SB16 in the setup. The problem persists with the setting on SB Pro too.

As I've noticed that on a SB16 too, I decided to investigate. The Epic/Jensen Soundblaster driver checks the DSP version and sets it to 2.0 (Soundblaster 2.0) if it is >5.00. It seems there is a bug in the code requesting the version from the card (I guess timing issues) and the driver always assumes it is >5.0 and thus limits it to 2.0.

I've just modified the fallback to set 4.00 as DSP version and Epic Pinball started to sound great when selecting SB16 in the setup.

This is the necessary patch:

 0000240F  7205              jc 0x2416
00002411 3D0005 cmp ax,0x500
00002414 7603 jna 0x2419
-00002416 B80002 mov ax,0x200
+00002416 B80004 mov ax,0x400
00002419 A33B22 mov [0x223b],ax
0000241C C3 ret
0000241D 8A0E4222 mov cl,[0x2242]

Just change the 0x02 at 0x2418 to 0x04 in MDRV004R.MUS.

This also works for Jazz Jackrabbit, where the offset is 0x24CA in MDRV004D.MUS. I'm using the GoG version of both games.

Cheers,
Michael

Reply 18 of 40, by elianda

User metadata
Rank l33t
Rank
l33t

@stargo: Thanks that is really helpful. I patched my files.

Retronn.de - Vintage Hardware Gallery, Drivers, Guides, Videos. Now with file search
Youtube Channel
FTP Server - Driver Archive and more
DVI2PCIe alignment and 2D image quality measurement tool

Reply 19 of 40, by tkcmd

User metadata
Rank Newbie
Rank
Newbie

Stargo, thanks for digging into this and pointing this out.
The same sound drivers are also used for one must fall 2097.
I can confirm that the same issue exists on my Intel Morrison motherboard with an AWE32 or a SB16 (can't remember the exact CT models out of my head)
I always wondered why the sound was so "dull" compared to PAS16 sound card in the same machine. After patching the driver the sound quality was comparable.
Other games might also use the same driver. Don't know if anyone has an exact list.
For now we have OMF2097/Epic Pinball/Jazz Jackrabbit.
I also tried the emulating this in PCEM with some other motherboard config and wasn't able to replicate the same bug in that environment.
So it has to do something with the hardware.
i did a quick disassembly of the related routines and it looks like the value is read out by using some IO DMA access to get that number.
I'm not familiar with how this precisely works so maybe someone else can take a look into this
Here's a small listing of the main routine and 2 subroutines that do the DMA work for the OMF driver

seg000:2400                 mov     al, 0E1h ; 'ß'
seg000:2402 call sub_2243
seg000:2405 call sub_2257
seg000:2408 jb short loc_2416
seg000:240A mov ah, al
seg000:240C call sub_2257
seg000:240F jb short loc_2416
seg000:2411 cmp ax, 500h
seg000:2414 jbe short
seg000:2416 loc_2416: ; CODE XREF: seg000:2408j
seg000:2416 ; seg000:240Fj
seg000:2416 mov ax, 200h
seg000:2419
seg000:2419 loc_2419: ; CODE XREF: seg000:2414j
seg000:2419 mov ds:word_223B, ax
seg000:241C retn


seg000:2243 sub_2243 proc near ; CODE XREF: seg000:2402p
seg000:2243 push ax
seg000:2244 push dx
seg000:2245 mov ah, al
seg000:2247 mov edx, ds:dword_24B
seg000:224C
seg000:224C loc_224C: ; CODE XREF: sub_2243+Cj
seg000:224C in al, dx
seg000:224D or al, al
seg000:224F js short loc_224C
seg000:2251 mov al, ah
seg000:2253 out dx, al
seg000:2254 pop dx
seg000:2255 pop ax
seg000:2256 retn
seg000:2256 sub_2243 endp

seg000:2257 sub_2257 proc near ; CODE XREF: seg000:2405p
seg000:2257 ; seg000:240Cp
seg000:2257 push dx
seg000:2258 push cx
seg000:2259 mov edx, ds:dword_24B
seg000:225E add dl, 2
seg000:2261 mov cx, 0FFFFh
seg000:2264
seg000:2264 loc_2264: ; CODE XREF: sub_2257+12j
seg000:2264 in al, dx ; DMA controller, 8237A-5.
seg000:2264 ; channel 1 current address
seg000:2265 or al, al
seg000:2267 js short loc_226E
seg000:2269 loop loc_2264
seg000:226B stc
seg000:226C jmp short loc_2275
seg000:226E ; ---------------------------------------------------------------------------
seg000:226E
seg000:226E loc_226E: ; CODE XREF: sub_2257+10j
seg000:226E sub dl, 4
seg000:2271 in al, dx
seg000:2272 clc
seg000:2273 jmp short $+2
seg000:2275 ; ---------------------------------------------------------------------------
seg000:2275
Show last 6 lines
seg000:2275 loc_2275:                               ; CODE XREF: sub_2257+15j
seg000:2275 ; sub_2257+1Cj
seg000:2275 pop cx
seg000:2276 pop dx
seg000:2277 retn
seg000:2277 sub_2257 endp