X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=state.c;h=106d5edb4e972b1a4ae16d6d1187c5255941e5f1;hp=871ef80c02a7caaf2b330d2b3bd0367ef8077413;hb=4fdfab079f3f006ae215ab453072a25588aa951d;hpb=22f08d9598e12f15de5e3c2f503c2ad1298dcc17 diff --git a/state.c b/state.c index 871ef80..106d5ed 100644 --- a/state.c +++ b/state.c @@ -24,6 +24,9 @@ #include #include #include +#ifdef GP2X +#include +#endif #include "types.h" #include "x6502.h" @@ -255,7 +258,11 @@ for(;;) if(!read32(&size,st)) break; switch(t) { - case 1:if(!ReadStateChunk(st,SFCPU,SFCPUELEMENTS,size)) ret=0;break; + case 1:if(!ReadStateChunk(st,SFCPU,SFCPUELEMENTS,size)) ret=0; +#ifdef ASM_6502 + asmcpu_unpack(); +#endif + break; case 2:if(!ReadStateChunk(st,SFCPUC,SFCPUCELEMENTS,size)) ret=0; else { @@ -299,6 +306,9 @@ void SaveState(void) header[3]=VERSION_NUMERIC; fwrite(header,1,16,st); +#ifdef ASM_6502 + asmcpu_pack(); +#endif totalsize=WriteStateChunk(st,1,SFCPU,SFCPUELEMENTS); totalsize+=WriteStateChunk(st,2,SFCPUC,SFCPUCELEMENTS); totalsize+=WriteStateChunk(st,3,SFPPU,SFPPUELEMENTS); @@ -310,6 +320,9 @@ void SaveState(void) write32(totalsize,st); SaveStateStatus[CurrentState]=1; fclose(st); +#ifdef GP2X + sync(); +#endif FCEU_DispMessage("State %d saved.",CurrentState); } else @@ -317,19 +330,9 @@ void SaveState(void) } static int LoadStateOld(FILE *st); -void LoadState(void) +int FCEUSS_LoadFP(FILE *st, int make_backup) { int x; - FILE *st=NULL; - - if(geniestage==1) - { - FCEU_DispMessage("Cannot load FCS in GG screen."); - return; - } - - st=fopen(FCEU_MakeFName(FCEUMKF_STATE,CurrentState,0),"rb"); - if(st!=NULL) { uint8 header[16]; @@ -368,9 +371,27 @@ void LoadState(void) lerror: FCEU_DispMessage("State %d load error.",CurrentState); SaveStateStatus[CurrentState]=0; - return; + return 0; + } + return 1; +} + +void LoadState(void) +{ + FILE *st=NULL; + + if(geniestage==1) + { + FCEU_DispMessage("Cannot load FCS in GG screen."); + return; + } + + st=fopen(FCEU_MakeFName(FCEUMKF_STATE,CurrentState,0),"rb"); + if (st) + { + FCEUSS_LoadFP(st, 0); + fclose(st); } - fclose(st); } char SaveStateStatus[10];