spu: avoid NULL pSpuIrq
[pcsx_rearmed.git] / plugins / dfsound / freeze.c
index b865b84..d38faa6 100644 (file)
@@ -307,6 +307,9 @@ long CALLBACK SPUfreeze(uint32_t ulFreezeMode, SPUFreeze_t * pF,
  ClearWorkingState();\r
  spu.cycles_played = cycles;\r
 \r
+ if (spu.spuCtrl & CTRL_IRQ)\r
+  schedule_next_irq();\r
+\r
  return 1;\r
 }\r
 \r
@@ -318,7 +321,7 @@ void LoadStateV5(SPUFreeze_t * pF)
 \r
  pFO=(SPUOSSFreeze_t *)(pF+1);\r
 \r
if(pFO->pSpuIrq) spu.pSpuIrq = spu.spuMemC+((long)pFO->pSpuIrq&0x7fff0); else spu.pSpuIrq=NULL;\r
spu.pSpuIrq = spu.spuMemC + ((spu.regArea[(H_SPUirqAddr - 0x0c00) / 2] << 3) & ~0xf);\r
 \r
  if(pFO->spuAddr)\r
   {\r
@@ -353,7 +356,7 @@ void LoadStateUnknown(SPUFreeze_t * pF, uint32_t cycles)
  spu.dwNewChannel=0;\r
  spu.dwChannelOn=0;\r
  spu.dwChannelDead=0;\r
- spu.pSpuIrq=0;\r
+ spu.pSpuIrq=spu.spuMemC;\r
 \r
  for(i=0;i<0xc0;i++)\r
   {\r