aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfsound/dma.c
diff options
context:
space:
mode:
authornotaz2015-01-04 01:43:23 +0200
committernotaz2015-01-04 22:44:23 +0200
commit5514a050f4e936f5c333fa1271b11bf5a6a9ea39 (patch)
tree45a7ab2cb344efe215c72251ba02f65452ace1a2 /plugins/dfsound/dma.c
parent63a4f6b6a3b0315590cd3009df2c92480ed2d98b (diff)
downloadpcsx_rearmed-5514a050f4e936f5c333fa1271b11bf5a6a9ea39.tar.gz
pcsx_rearmed-5514a050f4e936f5c333fa1271b11bf5a6a9ea39.tar.bz2
pcsx_rearmed-5514a050f4e936f5c333fa1271b11bf5a6a9ea39.zip
spu: start offload code to TI C64x DSP
Diffstat (limited to 'plugins/dfsound/dma.c')
-rw-r--r--plugins/dfsound/dma.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/plugins/dfsound/dma.c b/plugins/dfsound/dma.c
index 8d647ff..4798a19 100644
--- a/plugins/dfsound/dma.c
+++ b/plugins/dfsound/dma.c
@@ -27,9 +27,9 @@
unsigned short CALLBACK SPUreadDMA(void)
{
- unsigned short s=spu.spuMem[spu.spuAddr>>1];
- spu.spuAddr+=2;
- if(spu.spuAddr>0x7ffff) spu.spuAddr=0;
+ unsigned short s = *(unsigned short *)(spu.spuMemC + spu.spuAddr);
+ spu.spuAddr += 2;
+ spu.spuAddr &= 0x7fffe;
return s;
}
@@ -47,9 +47,9 @@ void CALLBACK SPUreadDMAMem(unsigned short *pusPSXMem, int iSize,
for(i=0;i<iSize;i++)
{
- *pusPSXMem++=spu.spuMem[spu.spuAddr>>1]; // spu addr got by writeregister
- spu.spuAddr+=2; // inc spu addr
- if(spu.spuAddr>0x7ffff) spu.spuAddr=0; // wrap
+ *pusPSXMem++ = *(unsigned short *)(spu.spuMemC + spu.spuAddr);
+ spu.spuAddr += 2;
+ spu.spuAddr &= 0x7fffe;
}
}
@@ -67,10 +67,10 @@ void CALLBACK SPUreadDMAMem(unsigned short *pusPSXMem, int iSize,
void CALLBACK SPUwriteDMA(unsigned short val)
{
- spu.spuMem[spu.spuAddr>>1] = val; // spu addr got by writeregister
+ *(unsigned short *)(spu.spuMemC + spu.spuAddr) = val;
- spu.spuAddr+=2; // inc spu addr
- if(spu.spuAddr>0x7ffff) spu.spuAddr=0; // wrap
+ spu.spuAddr += 2;
+ spu.spuAddr &= 0x7fffe;
}
////////////////////////////////////////////////////////////////////////
@@ -86,16 +86,16 @@ void CALLBACK SPUwriteDMAMem(unsigned short *pusPSXMem, int iSize,
if(spu.spuAddr + iSize*2 < 0x80000)
{
- memcpy(&spu.spuMem[spu.spuAddr>>1], pusPSXMem, iSize*2);
+ memcpy(spu.spuMemC + spu.spuAddr, pusPSXMem, iSize*2);
spu.spuAddr += iSize*2;
return;
}
for(i=0;i<iSize;i++)
{
- spu.spuMem[spu.spuAddr>>1] = *pusPSXMem++; // spu addr got by writeregister
- spu.spuAddr+=2; // inc spu addr
- spu.spuAddr&=0x7ffff; // wrap
+ *(unsigned short *)(spu.spuMemC + spu.spuAddr) = *pusPSXMem++;
+ spu.spuAddr += 2;
+ spu.spuAddr &= 0x7fffe;
}
}