X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=state.c;h=d711d9c19266f5acdd997de8707531296755e6fd;hp=5b68caa0cd6cc9bedff3678e779ff6f5420f4d4b;hb=refs%2Fheads%2Fmaster;hpb=a384bf449483e62637ce05a60ff4b06730a19934 diff --git a/state.c b/state.c index 5b68caa..d711d9c 100644 --- a/state.c +++ b/state.c @@ -33,7 +33,6 @@ #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" @@ -53,6 +52,7 @@ static int SFEXINDEX; static int stateversion; extern SFORMAT FCEUPPU_STATEINFO[]; // 3 +extern SFORMAT FCEUSND_STATEINFO[]; extern SFORMAT FCEUCTRL_STATEINFO[]; // 4 SFORMAT SFCPU[]={ // 1 @@ -83,32 +83,6 @@ SFORMAT SFCPUC[]={ // 2 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; @@ -259,13 +233,15 @@ for(;;) 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; } @@ -292,21 +268,21 @@ void SaveState(void) 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(); @@ -350,7 +326,6 @@ int FCEUSS_LoadFP(FILE *st, int make_backup) if(x) { okload: - FCEUSND_LoadState(header[3]); TempAddr=TempAddrT; RefreshAddr=RefreshAddrT;