From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BZmMb-0007RI-IB for qemu-devel@nongnu.org; Mon, 14 Jun 2004 03:58:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BZmMZ-0007Qe-Ah for qemu-devel@nongnu.org; Mon, 14 Jun 2004 03:58:41 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BZmMZ-0007Q6-48 for qemu-devel@nongnu.org; Mon, 14 Jun 2004 03:58:39 -0400 Received: from [81.228.9.114] (helo=av5-2-sn3.vrr.skanova.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BZmKw-0006ez-0a for qemu-devel@nongnu.org; Mon, 14 Jun 2004 03:56:58 -0400 Received: from smtp1-1-sn3.vrr.skanova.net (smtp1-1-sn3.vrr.skanova.net [81.228.9.177]) by av5-2-sn3.vrr.skanova.net (Postfix) with ESMTP id 02CD837E4A for ; Mon, 14 Jun 2004 09:56:53 +0200 (CEST) Received: from putte2k (h151n2fls306o994.telia.com [81.225.243.151]) by smtp1-1-sn3.vrr.skanova.net (Postfix) with SMTP id A738A3800E for ; Mon, 14 Jun 2004 09:56:52 +0200 (CEST) Message-ID: <000d01c451e5$36a1a3a0$0401a8c0@putte2k> From: "Mike Nordell" Date: Mon, 14 Jun 2004 09:57:15 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_000A_01C451F5.F8E1EE10" Subject: [Qemu-devel] Re: OSS audio debugging Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. ------=_NextPart_000_000A_01C451F5.F8E1EE10 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit malc wrote: > And while im figuring this out you can > try experimental SDL output driver(but see caveats): I've made some quite heavy modifications to your SDL audio patch, and from where I stand it now seems to work. It might seem a bit bloated in places, and it contains quite a lot of experimental code for tweaking. As the diff became larger than the file itself, I attached the file. I'd appreciate reports from both Win32'ers and *nix land using SDL, to see if there are any SDL differences between platforms not handled. I've done some testing to validate correctness of not only this SDL audio "driver" implementation, but QEMU as a whole. Tests have been performed on Windows 2000 host, therefore obviously only softmmu. I also only tested with "set SDL_VIDEODRIVER=windib", since DX (the SDL default) is for some reason for me way slower (and did interfere with keymappings - I haven't bothered to test pckbd.c CVS, since current setup works for me). All software tested works on real h/w, and on other emu's. Comanche: Maximum Overkill - DOS game from 1992. Tested with all combinations of pci, cirrus-vga and enable-audio. Works. Fully playable. Audio latency seems to be in the 50-100ms range, which seems like an acceptable tradeoff between latency and host overhead. Syndicate - DOS + DOS4WG Game from 1993. Sound works partially during the introduction sequence (lacking FM-emulation it sounds a bit strange though). Gets a bit "choppy" and "cracles/pops" due to the fact it changes sample rate of the SB16 DSP frequently, and closing+opening the audio device is a quite expensive operation. Mouse queue is never drained by guest program, why interaction doesn't work since kbd input hangs when mouse/kbd queue is full. Works with both real h/w and other emu's. PIC problem? DOOM Shareware - this one needs no introduction. Crashes, hangs and plays really "choppy" sound. The crashes and hangs (depending on moon-phase) seems to be due to incomplete detection of self-modifying code. When it does run for more than 1 second, the choppy sound I suspect might be, as for many cases here, due to timing or incorrect SB16, PIC or DMA emulation. That it also run as in molasses (the seconds I got it to run) further strengthen my suspicions of timing or PIC - even that it could be a large amount of self-modifying code invalidating the TB all the time too. I haven't dug deeper into it. Transport Tycoon With -cirrus-vga it fails to start with error "Unable to set up SVGA display". Without cirrus it switches video mode, but then seems to just hang. Windows 2000 sp4. Works, except every sound buffer sent (from host to emulator, I suspect) seems to play twice. Even the "tick" sound when moving from one folder to another in the Explorer is "echoed". CPU load is not high during audio playback, why I suspect timing, PIC, DMA or SB16 emulation problems. Other, larger, waveform playback sounds horrible due to this echo/reverb effect - and the fact it seems to not even play at the full speed it should, seems to suggest PIC problems (interrupt not delivered to guest?). With my slirp DHCP networking patch, and addition of the NE2000 ASIC writeb (neither yet committed it seems) it even got an IP from slirp DHCP on every boot. Never been able to access anything but the host machine itself though, and then only with a ICMP ping (which slirp rewrites as a UDP ping). DNS queries do leave host machine and passes through a gateway, and returns, but never seems to reach the guest OS. TCP socket has never been opened by QEMU despite attempts. Windows 98. Only tested with -enable-audio -cirrusvga -pci -nics 0. Claims the SB16 device is not functional. The usual suspects. Nothing else tested. Even with these problems, I'd say QEMU is starting to become possibly the best PC emulator there is. As a sidenote I can mention I tested one of the DOS programs under VMWare. Yep, VMWare crashed allright. ;-P /Mike ------=_NextPart_000_000A_01C451F5.F8E1EE10 Content-Type: application/x-gzip; name="oss.c.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="oss.c.gz" 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 h1gOHnzK3/8LPZmNVOZwAAA= ------=_NextPart_000_000A_01C451F5.F8E1EE10--