spu: save/restore decode_pos
authornotaz <notasas@gmail.com>
Sat, 22 Jan 2022 20:20:42 +0000 (22:20 +0200)
committernotaz <notasas@gmail.com>
Sat, 22 Jan 2022 20:20:42 +0000 (22:20 +0200)
SPUOSSFreeze_t conveniently had padding space for it

plugins/dfsound/freeze.c

index 43e6535..3bdbab1 100644 (file)
@@ -119,6 +119,7 @@ typedef struct
 typedef struct\r
 {\r
  unsigned short  spuIrq;\r
 typedef struct\r
 {\r
  unsigned short  spuIrq;\r
+ unsigned short  decode_pos;\r
  uint32_t   pSpuIrq;\r
  uint32_t   spuAddr;\r
  uint32_t   dummy1;\r
  uint32_t   pSpuIrq;\r
  uint32_t   spuAddr;\r
  uint32_t   dummy1;\r
@@ -261,6 +262,7 @@ long CALLBACK SPUfreeze(uint32_t ulFreezeMode, SPUFreeze_t * pF,
 \r
    pFO->spuAddr=spu.spuAddr;\r
    if(pFO->spuAddr==0) pFO->spuAddr=0xbaadf00d;\r
 \r
    pFO->spuAddr=spu.spuAddr;\r
    if(pFO->spuAddr==0) pFO->spuAddr=0xbaadf00d;\r
+   pFO->decode_pos = spu.decode_pos;\r
 \r
    for(i=0;i<MAXCHAN;i++)\r
     {\r
 \r
    for(i=0;i<MAXCHAN;i++)\r
     {\r
@@ -329,6 +331,7 @@ void LoadStateV5(SPUFreeze_t * pF)
    if (pFO->spuAddr == 0xbaadf00d) spu.spuAddr = 0;\r
    else spu.spuAddr = pFO->spuAddr & 0x7fffe;\r
   }\r
    if (pFO->spuAddr == 0xbaadf00d) spu.spuAddr = 0;\r
    else spu.spuAddr = pFO->spuAddr & 0x7fffe;\r
   }\r
+ spu.decode_pos = pFO->decode_pos & 0x1ff;\r
 \r
  spu.dwNewChannel=0;\r
  spu.dwChannelOn=0;\r
 \r
  spu.dwNewChannel=0;\r
  spu.dwChannelOn=0;\r