merge from libretro fork
[pcsx_rearmed.git] / plugins / dfsound / freeze.c
index 3bdbab1..51e9fd7 100644 (file)
@@ -145,10 +145,10 @@ static void save_channel(SPUCHAN_orig *d, const SPUCHAN *s, int ch)
  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
@@ -187,8 +187,8 @@ static void load_channel(SPUCHAN *d, const SPUCHAN_orig *s, int ch)
  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
@@ -209,7 +209,7 @@ static void load_channel(SPUCHAN *d, const SPUCHAN_orig *s, int ch)
  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
@@ -258,7 +258,7 @@ long CALLBACK SPUfreeze(uint32_t ulFreezeMode, SPUFreeze_t * pF,
    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
@@ -284,7 +284,7 @@ long CALLBACK SPUfreeze(uint32_t ulFreezeMode, SPUFreeze_t * pF,
  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
@@ -334,14 +334,14 @@ void LoadStateV5(SPUFreeze_t * pF)
  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
@@ -357,7 +357,7 @@ void LoadStateUnknown(SPUFreeze_t * pF, uint32_t cycles)
   }\r
 \r
  spu.dwNewChannel=0;\r
- spu.dwChannelOn=0;\r
+ spu.dwChannelsAudible=0;\r
  spu.dwChannelDead=0;\r
  spu.pSpuIrq=spu.spuMemC;\r
 \r