[Bug 32326] New: DirectSound output in SNES9x gives crackling/glitchy audio

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Nov 29 09:41:45 CST 2012


http://bugs.winehq.org/show_bug.cgi?id=32326

             Bug #: 32326
           Summary: DirectSound output in SNES9x gives crackling/glitchy
                    audio
           Product: Wine
           Version: 1.5.18
          Platform: x86-64
               URL: http://files.ipherswipsite.com/snes9x/snes9x-1.53-win3
                    2.zip
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: minor
          Priority: P2
         Component: directx-dsound
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: markk at clara.co.uk
    Classification: Unclassified


This bug applies to the SNES9x Super NES emulator. I'm testing with Wine
1.5.18-72-g0c0b229, Lubuntu 11.10 x86-64, Nvidia driver 304.64, SNES9x 1.53.

(I set the bug component to directx-dsound, but that might not be correct.)

Sound output using DirectSound is very CPU-intensive, and the sound
crackles/glitches. Or rather, something about the sound output takes a
relatively long time. According to "top" the CPU usage of SNES9x itself doesn't
go through the roof with sound enabled.

Emulation speed easily reaches 60fps with sound output disabled. On native
Windows that's the case with DirectSound output (as opposed to the default is
enabled too. CPU usage with sound disabled is ~26%.

However on Wine with 48kHz DirectSound output the frame rate I see drops to
~45fps, CPU usage in top ~24% (lower usage because fewer frames per second are
being emulated). If I disable the "Sync Sound" option frame rate returns to
60fps, ~30% CPU, but the sound still crackles.

That's with the default buffer length of 64ms. Increasing that to 210ms helps a
bit; I get 60fps even with Sync Sound enabled, though the sound still crackles.
Decreasing buffer length to 16ms I get about 10fps with Sync Sound enabled.

I don't think this problem is due to my hardware; other sound-producing
programs like Audacious, flash plugin etc. seem to be fine. And by comparison,
the Nestopia NES emulator in Wine produces (almost) glitch-free sound
regardless of the program's latency setting.

$ lspci -vv -s00:1b.0
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio
Controller (rev 03)
    Subsystem: Lenovo Device 384e
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B- DisINTx+
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
    Latency: 0, Cache Line Size: 64 bytes
    Interrupt: pin A routed to IRQ 47
    Region 0: Memory at fc300000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: <access denied>
    Kernel driver in use: HDA Intel
    Kernel modules: snd-hda-intel

To hopefully reproduce the issue:
- Download and unzip SNES9x
- Download a ROM image, e.g. from
http://pdroms.de/files/supernintendoentertainmentsystem/skipp-and-friends-pdrc-v4-01
- Run SNES9x. Choose Sound->Settings... and change Sound Driver to Snes9x
DirectSound and Playback Rate to 48 KHz. (Selecting any other rate causes a
crash for me, see bug 32312.)
- Select Video->Display Configuration... and change Output Method to
DirectDraw. (The default Direct3D just gives a blank screen, see bug 32319.)
- Select File->Load Game... and choose the ROM image.
- You should see graphics in the window and hear crackling/glitching sound.
- In the sound settings, you can experiment with changing the buffer length and
toggling the "Synchronize with sound core" option. I couldn't find any
combination which gave artifact-free sound.

For a +dsound log see the one I uploaded for bug 32312 at
http://bugs.winehq.org/attachment.cgi?id=42668

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list