From 251be42e0b6548aee004935707efd7956216dd8b Mon Sep 17 00:00:00 2001 From: dborth Date: Fri, 27 Nov 2009 08:53:39 +0000 Subject: [PATCH] sync --- source/fceultra/debug.cpp | 3 ++- source/fceultra/fceu.cpp | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/source/fceultra/debug.cpp b/source/fceultra/debug.cpp index 3b61991..bc05398 100644 --- a/source/fceultra/debug.cpp +++ b/source/fceultra/debug.cpp @@ -243,7 +243,8 @@ uint8 GetMem(uint16 A) { } } else if ((A >= 0x4000) && (A < 0x6000)) return 0xFF; //fix me - return ARead[A](A); + if (GameInfo) return ARead[A](A); //adelikat: 11/17/09: Prevent crash if this is called with no game loaded. + else return 0; } uint8 GetPPUMem(uint8 A) { diff --git a/source/fceultra/fceu.cpp b/source/fceultra/fceu.cpp index eeb5820..c34574c 100644 --- a/source/fceultra/fceu.cpp +++ b/source/fceultra/fceu.cpp @@ -191,8 +191,10 @@ int frameAdvanceDelay; //indicates that the emulation core just frame advanced (consumed the frame advance state and paused) bool JustFrameAdvanced=false; -static int AutosaveStatus[4] = {0, 0, 0, 0}; //is it safe to load Auto-savestate +static int *AutosaveStatus; //is it safe to load Auto-savestate static int AutosaveIndex = 0; //which Auto-savestate we're on +int AutosaveQty = 4; // Number of Autosaves to store +int AutosaveFrequency = 256; // Number of frames between autosaves // Flag that indicates whether the Auto-save option is enabled or not int EnableAutosave = 0; @@ -414,8 +416,10 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode) ResetGameLoaded(); - AutosaveStatus[0] = AutosaveStatus[1] = 0; - AutosaveStatus[2] = AutosaveStatus[3] = 0; + if (!AutosaveStatus) + AutosaveStatus = (int*)malloc(sizeof(int)*AutosaveQty); + for (AutosaveIndex=0; AutosaveIndex= AutosaveFrequency) { - AutosaveIndex = (AutosaveIndex + 1) % 4; + AutosaveCounter = 0; + AutosaveIndex = (AutosaveIndex + 1) % AutosaveQty; f = strdup(FCEU_MakeFName(FCEUMKF_AUTOSTATE,AutosaveIndex,0).c_str()); FCEUSS_Save(f); AutoSS = true; //Flag that an auto-savestate was made @@ -970,9 +974,9 @@ void FCEUI_Autosave(void) free(f); //Set pointer to previous available slot - if(AutosaveStatus[(AutosaveIndex + 3)%4] == 1) + if(AutosaveStatus[(AutosaveIndex + AutosaveQty-1)%AutosaveQty] == 1) { - AutosaveIndex = (AutosaveIndex + 3)%4; + AutosaveIndex = (AutosaveIndex + AutosaveQty-1)%AutosaveQty; } //Reset time to next Auto-save