summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorXTra.KrazzY <XTra.KrazzY@gmail.com>2008-08-30 15:54:44 +0000
committerXTra.KrazzY <XTra.KrazzY@gmail.com>2008-08-30 15:54:44 +0000
commit95eb8f9ef3b727c66c0e20d6fcdc3e96e1ec883c (patch)
tree38f4bdb47ca8d916ab4d089abe5153b3ca6c20f1 /Source/Core
parent06f0b02ecda6654c5931a6482bb65daf3da18812 (diff)
Save states now work (to some extent). Please report special cases which cause crashes or anything of the sort. Also removed debug messages from state management
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@385 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Core.vcproj2
-rw-r--r--Source/Core/Core/Src/State.cpp9
-rw-r--r--Source/Core/VideoCommon/Src/VideoState.cpp45
3 files changed, 26 insertions, 30 deletions
diff --git a/Source/Core/Core/Core.vcproj b/Source/Core/Core/Core.vcproj
index 01348aaa03..7251cea34b 100644
--- a/Source/Core/Core/Core.vcproj
+++ b/Source/Core/Core/Core.vcproj
@@ -264,7 +264,7 @@
OmitFramePointers="true"
EnableFiberSafeOptimizations="false"
WholeProgramOptimization="false"
- AdditionalIncludeDirectories="..\Common\Src;..\DiscIO\Src;..\..\PluginSpecs;..\Debugger\Src;..\..\..\Externals\Bochs_disasm"
+ AdditionalIncludeDirectories="..\Common\Src;..\DiscIO\Src;..\..\PluginSpecs;..\Debugger\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
StringPooling="true"
RuntimeLibrary="0"
diff --git a/Source/Core/Core/Src/State.cpp b/Source/Core/Core/Src/State.cpp
index 5215c5ea87..e6bb40ea07 100644
--- a/Source/Core/Core/Src/State.cpp
+++ b/Source/Core/Core/Src/State.cpp
@@ -18,6 +18,7 @@
#include "Common.h"
#include "State.h"
+#include "Core.h"
#include "CoreTiming.h"
#include "HW/HW.h"
#include "PowerPC/PowerPC.h"
@@ -28,6 +29,8 @@
#include <string>
+#include "zlib.h"
+
static int ev_Save;
static int ev_Load;
@@ -57,6 +60,8 @@ void SaveStateCallback(u64 userdata, int cyclesLate)
fwrite(buffer, sz, 1, f);
fclose(f);
delete [] buffer;
+
+ Core::DisplayMessage("Saved State", 2000);
}
void LoadStateCallback(u64 userdata, int cyclesLate)
@@ -71,9 +76,11 @@ void LoadStateCallback(u64 userdata, int cyclesLate)
fread(buffer, sz, 1, f);
fclose(f);
- u8 *ptr;
+ u8 *ptr = buffer;
PointerWrap p(&ptr, PointerWrap::MODE_READ);
DoState(p);
+
+ Core::DisplayMessage("Loaded State", 2000);
}
void State_Init()
diff --git a/Source/Core/VideoCommon/Src/VideoState.cpp b/Source/Core/VideoCommon/Src/VideoState.cpp
index a774ac5426..65ec2e05c3 100644
--- a/Source/Core/VideoCommon/Src/VideoState.cpp
+++ b/Source/Core/VideoCommon/Src/VideoState.cpp
@@ -23,33 +23,22 @@
#include "TextureDecoder.h"
#include "Fifo.h"
-static void DoState(PointerWrap &p) {
- // BP Memory
- p.Do(bpmem);
- // CP Memory
- p.Do(arraybases);
- p.Do(arraystrides);
- p.Do(MatrixIndexA);
- p.Do(MatrixIndexB);
- // XF Memory
- p.Do(xfregs);
- PanicAlert("video: XFMem");
- p.Do(xfmem);
- PanicAlert("video: Texture decoder");
- // Texture decoder
- p.Do(texMem);
-
- // FIFO
- PanicAlert("video: FIFO");
- Fifo_DoState(p);
-
- //TODO: Check for more pointers in the data structures and make them
- // serializable
-}
-
void VideoCommon_DoState(PointerWrap &p) {
- PanicAlert("Saving state from Video Common Library");
- //TODO: Save the video state
- DoState(p);
- PanicAlert("END save video");
+ // BP Memory
+ p.Do(bpmem);
+ // CP Memory
+ p.Do(arraybases);
+ p.Do(arraystrides);
+ p.Do(MatrixIndexA);
+ p.Do(MatrixIndexB);
+ // XF Memory
+ p.Do(xfregs);
+ p.Do(xfmem);
+ // Texture decoder
+ p.Do(texMem);
+
+ // FIFO
+ Fifo_DoState(p);
+
+ //TODO: search for more data that should be saved and add it here
}