X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=state.c;h=c50223dbb9fbd45214b25481e259ff2f6a0555c5;hp=e306edab5d04a45fac08e93cae3ba237230d962b;hb=d97315ac0bca825d2d50a44453bc5652946e2c67;hpb=890e37ba2b8ea1c7593dc05926d7431e3bd00bfb diff --git a/state.c b/state.c index e306eda..c50223d 100644 --- a/state.c +++ b/state.c @@ -43,7 +43,11 @@ #include "memory.h" #include "ppu.h" -static SFORMAT SFMDATA[64]; +static void (*SPreSave)(void) = 0; +static void (*SPostSave)(void) = 0; + +#define SFMDATA_SIZE (64) +static SFORMAT SFMDATA[SFMDATA_SIZE]; static int SFEXINDEX; static int stateversion; @@ -313,7 +317,11 @@ void SaveState(void) totalsize+=WriteStateChunk(st,3,FCEUPPU_STATEINFO); totalsize+=WriteStateChunk(st,4,FCEUCTRL_STATEINFO); totalsize+=WriteStateChunk(st,5,SFSND); + + + if(SPreSave) SPreSave(); totalsize+=WriteStateChunk(st,0x10,SFMDATA); + if(SPostSave) SPostSave(); fseek(st,4,SEEK_SET); write32(totalsize,st); @@ -418,27 +426,48 @@ void SaveStateRefresh(void) SaveStateStatus[0]=-1; } -void ResetExState(void) +void ResetExState(void (*PreSave)(void), void (*PostSave)(void)) { int x; for(x=0;x