spuAddr+=2;\r
if(spuAddr>0x7ffff) spuAddr=0;\r
\r
- iSpuAsyncWait=0;\r
-\r
return s;\r
}\r
\r
spuAddr+=2; // inc spu addr\r
if(spuAddr>0x7ffff) spuAddr=0; // wrap\r
}\r
-\r
- iSpuAsyncWait=0;\r
}\r
\r
////////////////////////////////////////////////////////////////////////\r
\r
spuAddr+=2; // inc spu addr\r
if(spuAddr>0x7ffff) spuAddr=0; // wrap\r
-\r
- iSpuAsyncWait=0;\r
}\r
\r
////////////////////////////////////////////////////////////////////////\r
void CALLBACK SPUwriteDMAMem(unsigned short * pusPSXMem,int iSize)\r
{\r
int i;\r
+ \r
+ had_dma = 1;\r
+\r
+ if(spuAddr + iSize*2 < 0x80000)\r
+ {\r
+ memcpy(&spuMem[spuAddr>>1], pusPSXMem, iSize*2);\r
+ spuAddr += iSize*2;\r
+ return;\r
+ }\r
\r
for(i=0;i<iSize;i++)\r
{\r
spuMem[spuAddr>>1] = *pusPSXMem++; // spu addr got by writeregister\r
spuAddr+=2; // inc spu addr\r
- if(spuAddr>0x7ffff) spuAddr=0; // wrap\r
+ spuAddr&=0x7ffff; // wrap\r
}\r
- \r
- iSpuAsyncWait=0;\r
}\r
\r
////////////////////////////////////////////////////////////////////////\r