I don't know if this the right thread for this, but I think I fixed a bug in the multi-channel code:
The problem was: sound in PES 2010 only partially works: effects work, music and commentator doesn't.
Debugging the problem, I noticed that the "cp_fields" function in dlls/dsound/mixer.c is called with device->pwfx->nChannels == 8 and dsb->pwfx->nChannels == 2. Since the case 6 vs. 2 channels was already in there, I added 8 vs. 2 channels and it worked perfectly. Here's the small patch:
I don't know if this the right thread for this, but I think I fixed a bug in the multi-channel code:
The problem was: sound in PES 2010 only partially works: effects work, music and commentator doesn't.
Debugging the problem, I noticed that the "cp_fields" function in dlls/dsound/mixer.c is called with device- >pwfx-> nChannels == 8 and dsb->pwfx- >nChannels == 2. Since the case 6 vs. 2 channels was already in there, I added 8 vs. 2 channels and it worked perfectly. Here's the small patch:
diff --git a/dlls/ dsound/ mixer.c b/dlls/ dsound/ mixer.c dsound/ mixer.c dsound/ mixer.c ferImpl *dsb, const BYTE *ibuf
index 846278e..5ed8d90 100644
--- a/dlls/
+++ b/dlls/
@@ -295,6 +295,7 @@ static inline void cp_fields(const IDirectSoundBuf
if (device- >pwfx-> nChannels == dsb->pwfx- >nChannels ||
(device- >pwfx-> nChannels == 2 && dsb->pwfx- >nChannels == 6) || >pwfx-> nChannels == 8 && dsb->pwfx- >nChannels == 2) ||
(device- >pwfx-> nChannels == 6 && dsb->pwfx- >nChannels == 2)) {
dsb-> convert( ibuf, obuf, istride, ostride, count, freqAcc, adj); >pwfx-> nChannels == 2 || dsb->pwfx- >nChannels == 2)
+ (device-
if (device-