X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fdfsound%2Fdma.c;h=85b746ceb988388d1a7cfb39e2d3d0c9e433f846;hb=650adfd2da779ba8855623362c2900583e22931e;hp=f92d06662422ae97e0a9eedff9f8e2af57d547df;hpb=ef79bbde537d6b9c745a7d86cb9df1d04c35590d;p=pcsx_rearmed.git diff --git a/plugins/dfsound/dma.c b/plugins/dfsound/dma.c index f92d0666..85b746ce 100644 --- a/plugins/dfsound/dma.c +++ b/plugins/dfsound/dma.c @@ -31,8 +31,6 @@ unsigned short CALLBACK SPUreadDMA(void) spuAddr+=2; if(spuAddr>0x7ffff) spuAddr=0; - iSpuAsyncWait=0; - return s; } @@ -40,18 +38,19 @@ unsigned short CALLBACK SPUreadDMA(void) // READ DMA (many values) //////////////////////////////////////////////////////////////////////// -void CALLBACK SPUreadDMAMem(unsigned short * pusPSXMem,int iSize) +void CALLBACK SPUreadDMAMem(unsigned short *pusPSXMem, int iSize, + unsigned int cycles) { int i; + do_samples_if_needed(cycles); + for(i=0;i>1]; // spu addr got by writeregister spuAddr+=2; // inc spu addr if(spuAddr>0x7ffff) spuAddr=0; // wrap } - - iSpuAsyncWait=0; } //////////////////////////////////////////////////////////////////////// @@ -72,26 +71,32 @@ void CALLBACK SPUwriteDMA(unsigned short val) spuAddr+=2; // inc spu addr if(spuAddr>0x7ffff) spuAddr=0; // wrap - - iSpuAsyncWait=0; } //////////////////////////////////////////////////////////////////////// // WRITE DMA (many values) //////////////////////////////////////////////////////////////////////// -void CALLBACK SPUwriteDMAMem(unsigned short * pusPSXMem,int iSize) +void CALLBACK SPUwriteDMAMem(unsigned short *pusPSXMem, int iSize, + unsigned int cycles) { int i; + + do_samples_if_needed(cycles); + + if(spuAddr + iSize*2 < 0x80000) + { + memcpy(&spuMem[spuAddr>>1], pusPSXMem, iSize*2); + spuAddr += iSize*2; + return; + } for(i=0;i>1] = *pusPSXMem++; // spu addr got by writeregister spuAddr+=2; // inc spu addr - if(spuAddr>0x7ffff) spuAddr=0; // wrap + spuAddr&=0x7ffff; // wrap } - - iSpuAsyncWait=0; } ////////////////////////////////////////////////////////////////////////