From cde73a67dc1e7d251e879f53eaa1452ba6426759 Mon Sep 17 00:00:00 2001 From: adelikat Date: Fri, 13 Nov 2009 05:35:32 +0000 Subject: [PATCH] made savestate compression togglable. Win32 - enable a menu item to toggle savestate compression. For SDL to have a similar feature it simply needs to toggle the variable bool compressSavestates in the core state.cpp. --- src/drivers/win/config.cpp | 1 + src/drivers/win/res.rc | 1 + src/drivers/win/resource.h | 3 ++- src/drivers/win/window.cpp | 5 +++++ src/state.cpp | 3 ++- src/state.h | 2 ++ vc/Help/fceux.hnd | Bin 210792 -> 210817 bytes 7 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/drivers/win/config.cpp b/src/drivers/win/config.cpp index ebaa0c25..d01879c3 100644 --- a/src/drivers/win/config.cpp +++ b/src/drivers/win/config.cpp @@ -299,6 +299,7 @@ static CFGSTRUCT fceuconfig[] = { AC(ramw_y), AC(backupSavestates), + AC(compressSavestates), ENDCFGSTRUCT }; diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 3917e4be..7925ade7 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -111,6 +111,7 @@ BEGIN MENUITEM "&Auto-savestates", MENU_ENABLE_AUTOSAVE MENUITEM "&Frame Adv. - Skip Lag", MENU_DISPLAY_FA_LAGSKIP MENUITEM "Backup Savestates", ID_ENABLE_BACKUPSAVESTATES + MENUITEM "Compress Savestates", ID_ENABLE_COMPRESSSAVESTATES END POPUP "&Display" BEGIN diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index 23c4026a..fc94362c 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -767,6 +767,7 @@ #define RW_MENU_FIRST_RECENT_FILE 40380 #define RW_MENU_LAST_RECENT_FILE 40400 #define ID_ENABLE_BACKUPSAVESTATES 40401 +#define ID_ENABLE_COMPRESSSAVESTATES 40402 #define IDC_DEBUGGER_ICONTRAY 55535 #define MW_ValueLabel2 65423 #define MW_ValueLabel1 65426 @@ -776,7 +777,7 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 160 -#define _APS_NEXT_COMMAND_VALUE 40402 +#define _APS_NEXT_COMMAND_VALUE 40403 #define _APS_NEXT_CONTROL_VALUE 1256 #define _APS_NEXT_SYMED_VALUE 101 #endif diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index 3655da98..5d46af14 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -387,6 +387,7 @@ void UpdateCheckedMenuItems() CheckMenuItem(fceumenu, MENU_DISPLAY_FA_LAGSKIP, frameAdvanceLagSkip?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(fceumenu, MENU_CONFIG_BINDSAVES, bindSavestate?MF_CHECKED : MF_UNCHECKED); CheckMenuItem(fceumenu, ID_ENABLE_BACKUPSAVESTATES, backupSavestates?MF_CHECKED : MF_UNCHECKED); + CheckMenuItem(fceumenu, ID_ENABLE_COMPRESSSAVESTATES, compressSavestates?MF_CHECKED : MF_UNCHECKED); //Config - Display SubMenu CheckMenuItem(fceumenu, MENU_DISPLAY_LAGCOUNTER, lagCounterDisplay?MF_CHECKED : MF_UNCHECKED); @@ -1621,6 +1622,10 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) backupSavestates ^=1; UpdateCheckedMenuItems(); break; + case ID_ENABLE_COMPRESSSAVESTATES: + compressSavestates ^=1; + UpdateCheckedMenuItems(); + break; //Display submenu case MENU_INPUTDISPLAY_0: //Input display off diff --git a/src/state.cpp b/src/state.cpp index be592083..290f151b 100644 --- a/src/state.cpp +++ b/src/state.cpp @@ -81,6 +81,7 @@ bool redoLS = false; //This will be true if a backupstate was loaded, meaning bool internalSaveLoad = false; bool backupSavestates = true; +bool compressSavestates = true; //By default FCEUX compresses savestates when a movie is inactive. #define SFMDATA_SIZE (64) static SFORMAT SFMDATA[SFMDATA_SIZE]; @@ -416,7 +417,7 @@ bool FCEUSS_SaveMS(std::ostream* outstream, int compressionLevel) int error = Z_OK; uint8* cbuf = (uint8*)ms.buf(); uLongf comprlen = -1; - if(compressionLevel != Z_NO_COMPRESSION) + if(compressionLevel != Z_NO_COMPRESSION && compressSavestates) { //worst case compression. //zlib says "0.1% larger than sourceLen plus 12 bytes" diff --git a/src/state.h b/src/state.h index 288db4c3..8a5065c3 100644 --- a/src/state.h +++ b/src/state.h @@ -75,3 +75,5 @@ extern bool undoLS; //undo loadstate flag extern bool redoLS; //redo savestate flag extern bool backupSavestates; //Whether or not to make backups, true by default bool CheckBackupSaveStateExist(); //Checks if backupsavestate exists + +extern bool compressSavestates; //Whether or not to compress non-movie savestates (by default, yes) diff --git a/vc/Help/fceux.hnd b/vc/Help/fceux.hnd index d7eb00a6d62d924d8f63529ea484045828cb2b1e..41d37684bb9adc299a7ab43a8795813e2bd9dd29 100644 GIT binary patch delta 5674 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