From f8b4311b665ce88f4d56d0cb13392bfa13e5cc56 Mon Sep 17 00:00:00 2001 From: "XTra.KrazzY" Date: Thu, 28 Aug 2008 09:19:46 +0000 Subject: [PATCH] Final typo and error fixes and include reordering git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@372 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/ChunkFile.cpp | 23 +++++++++++----------- Source/Core/Common/Src/ChunkFile.h | 11 +++++------ Source/Core/VideoCommon/Src/Fifo.cpp | 8 +++++++- Source/Core/VideoCommon/Src/Fifo.h | 5 +++++ Source/Core/VideoCommon/Src/VideoState.cpp | 10 ++++++---- Source/PluginSpecs/pluginspecs_video.h | 2 ++ 6 files changed, 37 insertions(+), 22 deletions(-) diff --git a/Source/Core/Common/Src/ChunkFile.cpp b/Source/Core/Common/Src/ChunkFile.cpp index be2dad6788..52e854d696 100644 --- a/Source/Core/Common/Src/ChunkFile.cpp +++ b/Source/Core/Common/Src/ChunkFile.cpp @@ -36,8 +36,8 @@ ChunkFile::ChunkFile(const char *filename, ChunkFileMode _mode) } fseek(f, 0, SEEK_END); - size = ftell(f); - eof = size; + fsize = ftell(f); + eof = fsize; stack_ptr = 0; } @@ -87,7 +87,7 @@ bool ChunkFile::Do(void *ptr, int size) } // Do variable size array (probably heap-allocated) -bool DoArray(void *ptr, int size, int arrSize) { +bool ChunkFile::DoArray(void *ptr, int size, int arrSize) { int sz; if(ptr == NULL) @@ -102,18 +102,19 @@ bool DoArray(void *ptr, int size, int arrSize) { if (sz != arrSize) return false; - for(int i = 0; i < arrSize; i++) { - fread(ptr[i], size, 1, f); - fseek(f, ((size + 3) & ~3) - size, SEEK_CUR); - } + fread(ptr, arrSize * size, 1, f); + fseek(f, (((arrSize * size) + 3) & ~3) - (arrSize * size), + SEEK_CUR); + break; case MODE_WRITE: WriteInt(size); WriteInt(arrSize); - for(int i = 0; i < arrSize; i++) { - fwrite(ptr[i], size, 1, f); - fseek(f, ((size + 3) & ~3) - size, SEEK_CUR); - } + + fwrite(ptr, arrSize * size, 1, f); + fseek(f, (((arrSize * size) + 3) & ~3) - (arrSize * size), + SEEK_CUR); + break; case MODE_VERIFY: sz = ReadInt(); diff --git a/Source/Core/Common/Src/ChunkFile.h b/Source/Core/Common/Src/ChunkFile.h index 606f001e90..a1ff5e1d9f 100644 --- a/Source/Core/Common/Src/ChunkFile.h +++ b/Source/Core/Common/Src/ChunkFile.h @@ -22,8 +22,7 @@ // Grabbed from one of my older projects and modified heavily. // Works more like a RIFF file than a Google Protocol Buffer, for example. -#include "Common.h" - + #include #include #include @@ -57,7 +56,7 @@ private: int stack_ptr; char *data; - int size; + int fsize; int eof; ChunkFileMode mode; @@ -88,7 +87,7 @@ public: // Store maps to file. Very useful. template - bool Do(std::map &x) { + bool Do(std::map &x) { return false; } @@ -101,8 +100,8 @@ public: // Disable size checks to save size for variable size array storing template - bool DoArray(T *x, int size, int arrSize) { - return DoArray((void *)x, size, arrSize); + bool DoArray(T *x, int arrSize) { + return DoArray((void *)x, sizeof(T), arrSize); } // Handle everything else diff --git a/Source/Core/VideoCommon/Src/Fifo.cpp b/Source/Core/VideoCommon/Src/Fifo.cpp index 7b407a934b..8e971700a0 100644 --- a/Source/Core/VideoCommon/Src/Fifo.cpp +++ b/Source/Core/VideoCommon/Src/Fifo.cpp @@ -20,7 +20,6 @@ #include "MemoryUtil.h" #include "Thread.h" #include "OpcodeDecoding.h" -#include "pluginspecs_video.h" #include "Fifo.h" @@ -33,6 +32,13 @@ static u8 *videoBuffer; static int size = 0; static int readptr = 0; +void Fifo_DoState(ChunkFile &f) { + f.Do(size); + f.DoArray(videoBuffer, size); + + f.Do(readptr); +} + void Fifo_Init() { videoBuffer = (u8*)AllocateMemoryPages(FIFO_SIZE); diff --git a/Source/Core/VideoCommon/Src/Fifo.h b/Source/Core/VideoCommon/Src/Fifo.h index f8f9a33892..43a20496f5 100644 --- a/Source/Core/VideoCommon/Src/Fifo.h +++ b/Source/Core/VideoCommon/Src/Fifo.h @@ -18,7 +18,11 @@ #ifndef _FIFO_H #define _FIFO_H +#include "pluginspecs_video.h" + #include "Common.h" +#include "ChunkFile.h" + // inline for speed! class FifoReader { @@ -53,6 +57,7 @@ extern FifoReader fifo; void Fifo_Init(); void Fifo_Shutdown(); void Fifo_EnterLoop(const SVideoInitialize &video_initialize); +void Fifo_DoState(ChunkFile &f); #endif diff --git a/Source/Core/VideoCommon/Src/VideoState.cpp b/Source/Core/VideoCommon/Src/VideoState.cpp index 8a8642f5dd..0952f0d0eb 100644 --- a/Source/Core/VideoCommon/Src/VideoState.cpp +++ b/Source/Core/VideoCommon/Src/VideoState.cpp @@ -16,7 +16,12 @@ // http://code.google.com/p/dolphin-emu/ #include "VideoState.h" + +#include "BPMemory.h" +#include "CPMemory.h" +#include "XFMemory.h" #include "TextureDecoder.h" +#include "Fifo.h" static void DoState(ChunkFile &f) { // BP Memory @@ -33,10 +38,7 @@ static void DoState(ChunkFile &f) { f.Do(texMem); // FIFO - f.Do(size); - f.DoArray(videoBuffer, sizeof(u8), size); - - f.Do(readptr); + Fifo_DoState(f); //TODO: Check for more pointers in the data structures and make them // serializable diff --git a/Source/PluginSpecs/pluginspecs_video.h b/Source/PluginSpecs/pluginspecs_video.h index 92bed5d527..c8a2c163ee 100644 --- a/Source/PluginSpecs/pluginspecs_video.h +++ b/Source/PluginSpecs/pluginspecs_video.h @@ -7,6 +7,8 @@ #include "PluginSpecs.h" +#include "ChunkFile.h" + #include "ExportProlog.h" typedef void (*TSetPEToken)(const unsigned short _token, const int _bSetTokenAcknowledge);