X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=state.c;h=d711d9c19266f5acdd997de8707531296755e6fd;hp=deacbbfde361bc36d85d755d2f06998570e4eee1;hb=527b98f6e7965f464c804ee5279855326c78dc6d;hpb=39e1ccffc7ec6bbee9bb3ed1be7cbe856792bf69 diff --git a/state.c b/state.c index deacbbf..d711d9c 100644 --- a/state.c +++ b/state.c @@ -52,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 @@ -82,30 +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, } -}; - - - static int SubWrite(FILE *st, SFORMAT *sf) { uint32 acc=0; @@ -256,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,SFSND,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; } @@ -289,20 +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); #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,SFSND); + totalsize+=WriteStateChunk(st,5,FCEUSND_STATEINFO); if(SPreSave) SPreSave();