aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authortwinaphex2013-01-04 19:03:21 +0100
committertwinaphex2013-01-04 19:03:21 +0100
commitac7b2a33ddb2392582c50d29c772e9e99cd762c9 (patch)
treeab7b9fb3383c1f135b43abd62262b74fd838fe88 /plugins
parenta9a3be15b649c633521b5a0143715d4ae901b790 (diff)
parent7ba3e79c025dfd41ba88bcbe7b330a1a7fd68551 (diff)
downloadpcsx_rearmed-ac7b2a33ddb2392582c50d29c772e9e99cd762c9.tar.gz
pcsx_rearmed-ac7b2a33ddb2392582c50d29c772e9e99cd762c9.tar.bz2
pcsx_rearmed-ac7b2a33ddb2392582c50d29c772e9e99cd762c9.zip
Merge git://github.com/notaz/pcsx_rearmed
Diffstat (limited to 'plugins')
-rw-r--r--plugins/dfsound/spu.c3
-rw-r--r--plugins/dfsound/xa.c10
2 files changed, 8 insertions, 5 deletions
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c
index 2466569..9f91b8b 100644
--- a/plugins/dfsound/spu.c
+++ b/plugins/dfsound/spu.c
@@ -689,7 +689,7 @@ static int do_samples(int forced_updates)
int ch,d,silentch;
int bIRQReturn=0;
- while(1)
+ while(!bIRQReturn)
{
// ok, at the beginning we are looking if there is
// enuff free place in the dsound/oss buffer to
@@ -863,6 +863,7 @@ static int do_samples(int forced_updates)
{
//printf("decoder irq %x\n", decode_pos);
do_irq();
+ bIRQReturn = 1;
}
}
decode_pos = (decode_pos + NSSIZE) & 0x1ff;
diff --git a/plugins/dfsound/xa.c b/plugins/dfsound/xa.c
index 1c5425e..e58bca2 100644
--- a/plugins/dfsound/xa.c
+++ b/plugins/dfsound/xa.c
@@ -78,8 +78,9 @@ INLINE void MixXA(void)
r = ((int)(short)(v >> 16) * iLeftXAVol) >> 15;
SSumLR[ns++] += l;
SSumLR[ns++] += r;
- spuMem[cursor] = l;
- spuMem[cursor + 0x400/2] = r;
+
+ spuMem[cursor] = v;
+ spuMem[cursor + 0x400/2] = v >> 16;
cursor = (cursor + 1) & 0x1ff;
}
XALastVal = v;
@@ -94,8 +95,9 @@ INLINE void MixXA(void)
r = ((int)(short)(v >> 16) * iLeftXAVol) >> 15;
SSumLR[ns++] += l;
SSumLR[ns++] += r;
- spuMem[cursor] = l;
- spuMem[cursor + 0x400/2] = r;
+
+ spuMem[cursor] = v;
+ spuMem[cursor + 0x400/2] = v >> 16;
cursor = (cursor + 1) & 0x1ff;
}
}