d->spos = s->spos;\r
d->sinc = s->sinc;\r
memcpy(d->SB, spu.SB + ch * SB_SIZE, sizeof(d->SB[0]) * SB_SIZE);\r
- d->iStart = (regAreaGet(ch,6)&~1)<<3;\r
+ d->iStart = (regAreaGetCh(ch, 6) & ~1) << 3;\r
d->iCurr = 0; // set by the caller\r
d->iLoop = 0; // set by the caller\r
- d->bOn = !!(spu.dwChannelOn & (1<<ch));\r
+ d->bOn = !!(spu.dwChannelsAudible & (1<<ch));\r
d->bStop = s->ADSRX.State == ADSR_RELEASE;\r
d->bReverb = s->bReverb;\r
d->iActFreq = 1;\r
d->sinc = s->sinc;\r
d->sinc_inv = 0;\r
memcpy(spu.SB + ch * SB_SIZE, s->SB, sizeof(spu.SB[0]) * SB_SIZE);\r
- d->pCurr = (void *)((long)s->iCurr & 0x7fff0);\r
- d->pLoop = (void *)((long)s->iLoop & 0x7fff0);\r
+ d->pCurr = (void *)((uintptr_t)s->iCurr & 0x7fff0);\r
+ d->pLoop = (void *)((uintptr_t)s->iLoop & 0x7fff0);\r
d->bReverb = s->bReverb;\r
d->iLeftVolume = s->iLeftVolume;\r
d->iRightVolume = s->iRightVolume;\r
d->ADSRX.ReleaseModeExp = s->ADSRX.ReleaseModeExp;\r
d->ADSRX.ReleaseRate = s->ADSRX.ReleaseRate;\r
d->ADSRX.EnvelopeVol = s->ADSRX.EnvelopeVol;\r
- if (s->bOn) spu.dwChannelOn |= 1<<ch;\r
+ if (s->bOn) spu.dwChannelsAudible |= 1<<ch;\r
else d->ADSRX.EnvelopeVol = 0;\r
}\r
\r
pFO=(SPUOSSFreeze_t *)(pF+1); // store special stuff\r
\r
pFO->spuIrq = spu.regArea[(H_SPUirqAddr - 0x0c00) / 2];\r
- if(spu.pSpuIrq) pFO->pSpuIrq = (unsigned long)spu.pSpuIrq-(unsigned long)spu.spuMemC;\r
+ if(spu.pSpuIrq) pFO->pSpuIrq = spu.pSpuIrq - spu.spuMemC;\r
\r
pFO->spuAddr=spu.spuAddr;\r
if(pFO->spuAddr==0) pFO->spuAddr=0xbaadf00d;\r
spu.bMemDirty = 1;\r
\r
if(pF->xaS.nsamples<=4032) // start xa again\r
- SPUplayADPCMchannel(&pF->xaS);\r
+ SPUplayADPCMchannel(&pF->xaS, spu.cycles_played, 0);\r
\r
spu.xapGlobal=0;\r
\r
spu.decode_pos = pFO->decode_pos & 0x1ff;\r
\r
spu.dwNewChannel=0;\r
- spu.dwChannelOn=0;\r
+ spu.dwChannelsAudible=0;\r
spu.dwChannelDead=0;\r
for(i=0;i<MAXCHAN;i++)\r
{\r
load_channel(&spu.s_chan[i],&pFO->s_chan[i],i);\r
\r
- spu.s_chan[i].pCurr+=(unsigned long)spu.spuMemC;\r
- spu.s_chan[i].pLoop+=(unsigned long)spu.spuMemC;\r
+ spu.s_chan[i].pCurr+=(uintptr_t)spu.spuMemC;\r
+ spu.s_chan[i].pLoop+=(uintptr_t)spu.spuMemC;\r
}\r
}\r
\r
}\r
\r
spu.dwNewChannel=0;\r
- spu.dwChannelOn=0;\r
+ spu.dwChannelsAudible=0;\r
spu.dwChannelDead=0;\r
spu.pSpuIrq=spu.spuMemC;\r
\r