aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfsound/freeze.c
diff options
context:
space:
mode:
authortwinaphex2014-12-21 23:19:03 +0100
committertwinaphex2014-12-21 23:19:03 +0100
commite63a9dc66d0ce5a9d88353f880ef88a6590d06fd (patch)
tree6489b0d548ece33a4e92df40db442d839b934eb2 /plugins/dfsound/freeze.c
parent247fc699be6b3bd95fd9126541e0804cc8dffdd4 (diff)
parent5ec7acdfb1bc4c3da372f7f8e1a0a1022becce21 (diff)
downloadpcsx_rearmed-e63a9dc66d0ce5a9d88353f880ef88a6590d06fd.tar.gz
pcsx_rearmed-e63a9dc66d0ce5a9d88353f880ef88a6590d06fd.tar.bz2
pcsx_rearmed-e63a9dc66d0ce5a9d88353f880ef88a6590d06fd.zip
Merge https://github.com/notaz/pcsx_rearmed
Diffstat (limited to 'plugins/dfsound/freeze.c')
-rw-r--r--plugins/dfsound/freeze.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins/dfsound/freeze.c b/plugins/dfsound/freeze.c
index b865b84..d38faa6 100644
--- a/plugins/dfsound/freeze.c
+++ b/plugins/dfsound/freeze.c
@@ -307,6 +307,9 @@ long CALLBACK SPUfreeze(uint32_t ulFreezeMode, SPUFreeze_t * pF,
ClearWorkingState();
spu.cycles_played = cycles;
+ if (spu.spuCtrl & CTRL_IRQ)
+ schedule_next_irq();
+
return 1;
}
@@ -318,7 +321,7 @@ void LoadStateV5(SPUFreeze_t * pF)
pFO=(SPUOSSFreeze_t *)(pF+1);
- if(pFO->pSpuIrq) spu.pSpuIrq = spu.spuMemC+((long)pFO->pSpuIrq&0x7fff0); else spu.pSpuIrq=NULL;
+ spu.pSpuIrq = spu.spuMemC + ((spu.regArea[(H_SPUirqAddr - 0x0c00) / 2] << 3) & ~0xf);
if(pFO->spuAddr)
{
@@ -353,7 +356,7 @@ void LoadStateUnknown(SPUFreeze_t * pF, uint32_t cycles)
spu.dwNewChannel=0;
spu.dwChannelOn=0;
spu.dwChannelDead=0;
- spu.pSpuIrq=0;
+ spu.pSpuIrq=spu.spuMemC;
for(i=0;i<0xc0;i++)
{