tag:blogger.com,1999:blog-6993165553021868648.post4908517483532864153..comments2024-03-27T05:39:24.505-04:00Comments on Nerdly Pleasures: Sound Blaster 8-bit Playback QualityGreat Hierophanthttp://www.blogger.com/profile/04409413307024477304noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-6993165553021868648.post-83473649939408157502017-03-03T12:54:51.188-05:002017-03-03T12:54:51.188-05:00Yes, so we would really need a v1.xx DSP to verify...Yes, so we would really need a v1.xx DSP to verify if auto-init DMA transfers crash the DSP or not.<br /><br />Also, we can't rule out that the v2.00 DSP also changed things in the single-cycle implementation, compared to the V1.xx DSPs.<br /><br />Nevertheless, I've developed a simple test program, and put up a topic over at Vogons: http://www.vogons.org/viewtopic.php?f=46&t=52806<br />I'd be interested to know if these old cards actually *can* do seamless playback at all, and if so, what the minimum CPU requirements would be for it.<br /><br />If someone with a v1.xx DSP happens to crash on the test-program, then that bit is settled as well :)Scalihttps://www.blogger.com/profile/13705021493452294842noreply@blogger.comtag:blogger.com,1999:blog-6993165553021868648.post-91223628930773455762017-03-01T01:02:25.945-05:002017-03-01T01:02:25.945-05:00I would be happy to, but my SB 1.5 has a v2.00 DSP...I would be happy to, but my SB 1.5 has a v2.00 DSP, which added the auto-init DMA mode. Trixter/Hornet's 8088 Domination requires it and works just fine with my card. I wonder if an SB 1.0-1.5 card with a v1.05 DSP, which is not supposed to have auto-init DMA, would be more interesting to test. I don't have one of those :(Great Hierophanthttps://www.blogger.com/profile/04409413307024477304noreply@blogger.comtag:blogger.com,1999:blog-6993165553021868648.post-419336606784498762017-02-28T05:39:47.138-05:002017-02-28T05:39:47.138-05:00Interesting. Could you tell me what system (CPU an...Interesting. Could you tell me what system (CPU and speed) you used for these recordings?<br />I am currently researching this pop-and-click issue...<br />As you may know, various early demos, trackers and sound libraries used weird tricks to get double-buffered audio working on early Sound Blasters. Some notorious examples are GoldPlay (https://github.com/joncampbell123/dosbox-x/wiki/Libraries:Goldplay) and Crystal Dream (https://github.com/joncampbell123/dosbox-x/wiki/Hardware%3ASound-Blaster%3ANagging-the-DSP).<br /><br />I have found quite a bit of conflicting info on this.<br />The source is that the early SB's (DSP v1.x) only have a 'single-transfer' DMA mode: You set up the DMA controller and DSP for a single transfer, then the DSP will signal an interrupt when the transfer is complete. For continuous playback, you need to set up a new single transfer.<br />On SB2.0 they introduced 'auto-init' DMA, where the DSP will still signal an interrupt after it has played X samples, but it will continue playing (you set up the DMA controller to 'auto-init' mode as well, which means it will automatically restart the same transfer when a transfer is complete).<br /><br />I have done some experiments on my SB Pro 2.0 (DSP v3.01) using single-transfer mode, and I found that it works fine to set the DMA controller to auto-init, and just restart the DSP on every interrupt. There are no pops and clicks.<br />You just set the DSP to transfer less bytes than the DMA controller, and then you can do double-buffering just like you would with 'auto-init' mode on a newer DSP. It just takes a bit more overhead because you need to send a new command to the DSP everytime. But since the DSP seems to respond quickly enough to play without pops and clicks, I see no real downside.<br />From your tests, I get the impression that the original SB1.5 is also capable of the same, and the tricks used by GoldPlay, Crystal Dream and others, are not required to get seamless streaming audio from an SB1.x.<br /><br />Another bit of dubious info I found is on Osdev: http://wiki.osdev.org/ISA_DMA<br />"Some expansion cards do not support auto-init DMA such as Sound Blaster 1.x. These devices will crash if used with auto-init DMA. Sound Blaster 2.0 and later do support auto-init DMA."<br /><br />I don't think this is true. Firstly, I don't see why they would crash, because the auto-init mode on the DMA controller is strictly in the DMA controller itself, and does nothing other than reloading the same address and count automatically. This should be transparent to the DSP, and at least on my SB Pro 2.0 it is. I don't see how it could crash the DSP.<br /><br />Sadly I do not own an SB1.x myself, but perhaps you would be willing to help me run some test-programs to verify that the DSP indeed does not crash, and actually plays the buffer without pops and clicks?Scalihttps://www.blogger.com/profile/13705021493452294842noreply@blogger.comtag:blogger.com,1999:blog-6993165553021868648.post-27363464779370271732016-09-25T00:58:29.812-04:002016-09-25T00:58:29.812-04:00This is a great example of the Single-Cycle DMA mo...This is a great example of the Single-Cycle DMA mode bug of the SB16 cards.<br />These clicks and pops plague all non-Vibra SB16 cards including the AWE32 with DSP 4.0x to 4.13.Anonymousnoreply@blogger.com