#include "version.h"
#include "fce.h"
#include "sound.h"
-#include "sound098.h"
#define INESPRIV // Take this out when old save state support is removed in a future version.
#include "ines.h"
#include "svga.h"
static int stateversion;
extern SFORMAT FCEUPPU_STATEINFO[]; // 3
+extern SFORMAT FCEUSND_STATEINFO[];
extern SFORMAT FCEUCTRL_STATEINFO[]; // 4
SFORMAT SFCPU[]={ // 1
extern uint16 TempAddrT,RefreshAddrT;
-SFORMAT SFSND[]={
- { &fhcnt, 4|RLSB,"FHCN"},
- { &fcnt, 1, "FCNT"},
- { PSG, 14, "PSG"},
- { &PSG[0x15], 1, "P15"},
- { &PSG[0x17], 1, "P17"},
- { decvolume, 3, "DECV"},
- { &sqnon, 1, "SQNO"},
- { &nreg, 2|RLSB, "NREG"},
- { &trimode, 1, "TRIM"},
- { &tricoop, 1, "TRIC"},
- { sweepon, 2, "SWEE"},
- { &curfreq[0], 4|RLSB,"CRF1"},
- { &curfreq[1], 4|RLSB,"CRF2"},
- { SweepCount, 2,"SWCT"},
- { DecCountTo1, 3,"DCT1"},
- { &PCMBitIndex, 1,"PBIN"},
- { &PCMAddressIndex, 4|RLSB, "PAIN"},
- { &PCMSizeIndex, 4|RLSB, "PSIN"},
- { 0, }
-};
-
-extern SFORMAT FCEUSND_STATEINFO[]; // TODO: unify?
-#define get_snd_sf() (use098code ? FCEUSND_STATEINFO : SFSND)
-
-
static int SubWrite(FILE *st, SFORMAT *sf)
{
uint32 acc=0;
break;
case 3:if(!ReadStateChunk(st,FCEUPPU_STATEINFO,size)) ret=0;break;
case 4:if(!ReadStateChunk(st,FCEUCTRL_STATEINFO,size)) ret=0;break;
- case 5:if(!ReadStateChunk(st,get_snd_sf(),size)) ret=0;break;
+ case 5:if(!ReadStateChunk(st,FCEUSND_STATEINFO,size)) ret=0;break;
case 0x10:if(!ReadStateChunk(st,SFMDATA,size)) ret=0;break;
default:printf("ReadStateChunks: unknown chunk: %i\n", t);
if(fseek(st,size,SEEK_CUR)<0) goto endo;break;
}
}
endo:
+ if(ret)
+ FCEUSND_LoadState(stateversion);
return ret;
}
if(st!=NULL)
{
- static uint32 totalsize;
- static uint8 header[16]="FCS";
- memset(header+4,0,13);
+ uint32 totalsize;
+ uint8 header[16]="FCS";
+ memset(header+4,0,sizeof(header)-4);
header[3]=VERSION_NUMERIC;
fwrite(header,1,16,st);
- FCEUSND_SaveState();
#ifdef ASM_6502
asmcpu_pack();
#endif
+ FCEUSND_SaveState();
totalsize=WriteStateChunk(st,1,SFCPU);
totalsize+=WriteStateChunk(st,2,SFCPUC);
totalsize+=WriteStateChunk(st,3,FCEUPPU_STATEINFO);
totalsize+=WriteStateChunk(st,4,FCEUCTRL_STATEINFO);
- totalsize+=WriteStateChunk(st,5,get_snd_sf());
+ totalsize+=WriteStateChunk(st,5,FCEUSND_STATEINFO);
if(SPreSave) SPreSave();
if(x)
{
okload:
- FCEUSND_LoadState(header[3]);
TempAddr=TempAddrT;
RefreshAddr=RefreshAddrT;