VOGONS


First post, by alexanrs

User metadata
Rank l33t
Rank
l33t

Hello everyone!
Somewhat recently I got a nice clone of the Turtle Beach Monte Carlo 929 (exact copy of the PCB layout) with genuine OPL3 and mounted my dear DB50XG on it. As I was mainly using it for DOS, I did not notice this before, but, for some reason, it stutter like crazy in Windows. Winamp using DirectSound out is a particularly bad offender, but waveOut does it too, as Windows Media Player and even the MS Synth test in DxDiag. Playing the same files in DOS using either QView Pro or MPXPlay works without issues. Here is what I tried to do:

  • Using the TB Monte Carlo drivers
    Digital sound stutters, everything esle works great. The only nitpick is that I need to set the default MIDI device to OPL3 or else the MPU will be busy for DOS apps. Also, resources need to be explicitly specified, just like all other drivers I've used.
  • Use some (older) OPTi MAD16 drivers I've found
    Honestly, this looks like slightly revamped Windows 3.11 drivers. Does not show on the device manager and stores its settings in System.ini. Stutters all the same. Had to manually remove its entries in System.ini.
  • Remove all specific sound drivers, initialize the card in WSS mode from DOS (AUTOEXEC.BAT) and use WSS drivers that come with Win98
    Stutters too. SoundBlaster emulation for DOS is limited to SB1.0 or 2.0 (not Pro), I lost OPL3 and MPU (both show up as options in the MIDI mapper, but are muted and messing with the mixer didn't fix it). Interestingly, this is the only driver that allows me to use WSS in DOS games from within Windows.
  • Same as above, but using SBPro mode and drivers instead
    No stuttering. MIDI works perfectly. If I were using Windows just as a glorified launcher for DOS games I could probably settle for this setup. Most Windows apps, though, sound horrible here. Whatever conversion Windows does to play 16-bit samples in an 8-bit card just makes everything sound scratchy and noisy. Winamp seems to do the conversion itself, and sounds perfect for an 8-bit sound card.

Windows drivers (except SBPro) are also very picky about IRQs. I can only set it to 7 or 10, so I disabled the parallel port and set it to 7. Also, it doesn't allow the MPU401 part of it to share an IRQ with the SoundBlaster part, so I set it to 9.
The rest of the system is:

  • Pentium MMX 200 MHz
  • Compaq Deskpro 2000 motherboard (VIA VP2/97 or AMD 640 based)
  • 256MB SDRAM
  • Diamond Monster 3D II - 8MB
  • Cheap PCI NIC - Yes, I tried removing it, no change
  • 1MB S3 Trio64 V2/GX onboard

Any sugestions? Does anyone have experience with these cards?

Reply 1 of 6, by alexanrs

User metadata
Rank l33t
Rank
l33t

Quick update:
If I do not initialize the card in DOS, then there is no stuttering, but the MPU401 (and my MIDI daughterboard, by proxy) do not work. It shows "Device not present or ..." on the device manager. Will test later if initializing the card in DOS but disabling the MPU driver exibits the same behaviour.

Reply 2 of 6, by alexanrs

User metadata
Rank l33t
Rank
l33t

Aaaand deleting the damn MPU driver makes no difference at all. If the card is initialized in DOS the sound stutters. Also, if the card was ever initialized it needs to be turned off and on for the stuttering to stop. Too bad, but it sounds pristine. I'd dare say it leaves nothing to be desired compared with my modern onboard sound cards (as far as analog output quality).

Reply 4 of 6, by alexanrs

User metadata
Rank l33t
Rank
l33t

The Shuttle driver I've found seems to be simply a rebranded version of the reference OPTi drivers, just like the Turtle Beach ones... except it is a 4.0.1 beta thing, whereas the Monte Carlo used 4.0.38. I've also found a non-branded OPTi driver version 4.0.20. Might try them later, but I'm not very hopeful.

Reply 5 of 6, by alexanrs

User metadata
Rank l33t
Rank
l33t

I got tired of messing with drivers and decided to take another approach to solve this, and it worked.

Basically, I looked at both the MAD16 linux drivers source code and the OPTi 82C929 datasheet and learned how the hardware is initialized. Then I created some dumb little utility in Borland C++ that does not fully initialize anything, but enables the MPU-401 port and sets its IRQ and port adresses. Now I've got both my Yamaha MIDI daughterboard and stutter-free sound in Windows.

Since this might be useful for someone in the future, I'll attach both the source code and the utility to this post. This might also work for other OPTi chips.

Attachments

  • Filename
    OPTIMPU.rar
    File size
    10.64 KiB
    Downloads
    153 downloads
    File comment
    OPTi MPU-401 initialization tool
    File license
    Fair use/fair dealing exception

Reply 6 of 6, by alexanrs

User metadata
Rank l33t
Rank
l33t

Well, the culprit is the game port. The DOS drivers initialize a bit in one of the registers enabling it (it is disabled by default), and this doesn't get reset by restarting. Without that bit, Windows detects the gameport alright, but it seems to be inactive (couldn't get my SideWinder game pad to be detected). Unplugging it doesn't help, but removing it from the gamepad list in control panel does seem to stop the stuttering.

Any sugestions now? I'll try letting it disable interrupts when polling just to test... I'll also try a simpler joystick too.