Merge pull request #284 from unknownbrackets/savestates

Fix some missing things / bugs in save states.
This commit is contained in:
Henrik Rydgård committed 2012-12-29 03:50:34 -08:00
commit af73ac11d3
7 files changed
+42 -23

No files matched your search

+1
View File
@@ -208,6 +208,7 @@ int PSPMsgDialog::Shutdown()
void PSPMsgDialog::DoState(PointerWrap &p)
{
PSPDialog::DoState(p);
p.Do(display);
p.Do(messageDialog);
p.Do(messageDialogAddr);
+1
View File
@@ -236,6 +236,7 @@ int PSPOskDialog::Update()
void PSPOskDialog::DoState(PointerWrap &p)
{
PSPDialog::DoState(p);
p.Do(oskParams);
p.Do(oskData);
p.Do(oskDesc);
+5 -1
View File
@@ -708,11 +708,15 @@ int PSPSaveDialog::Shutdown()
void PSPSaveDialog::DoState(PointerWrap &p)
{
PSPDialog::DoState(p);
p.Do(display);
param.DoState(p);
p.Do(request);
// Just reset it.
param.SetPspParam(&request);
bool hasParam = param.GetPspParam() != NULL;
p.Do(hasParam);
if (hasParam)
param.SetPspParam(&request);
p.Do(requestAddr);
p.Do(currentSelectedSave);
p.Do(yesnoChoice);
+7
View File
@@ -482,6 +482,7 @@ int SavedataParam::SetPspParam(SceUtilitySavedataParam *param)
Clear();
saveDataList = new SaveFileInfo[1];
saveDataListCount = 1;
// get and stock file info for each file
DEBUG_LOG(HLE,"Name : %s",GetSaveName(param).c_str());
@@ -608,6 +609,12 @@ void SavedataParam::DoState(PointerWrap &p)
p.Do(selectedSave);
p.Do(saveDataListCount);
p.Do(saveNameListDataCount);
if (p.mode == p.MODE_READ)
{
if (saveDataList != NULL)
delete [] saveDataList;
saveDataList = new SaveFileInfo[saveDataListCount];
}
p.DoArray(saveDataList, saveDataListCount);
p.DoMarker("SavedataParam");
}
+1
View File
@@ -865,6 +865,7 @@ public:
virtual void DoState(PointerWrap &p) {
p.Do(name);
p.Do(index);
// TODO: Is this the right way for it to wake up?
int count = listing.size();
+7 -1
View File
@@ -55,6 +55,12 @@ struct NativeFPL
//FPL - Fixed Length Dynamic Memory Pool - every item has the same length
struct FPL : public KernelObject
{
FPL() : blocks(NULL) {}
~FPL() {
if (blocks != NULL) {
delete [] blocks;
}
}
const char *GetName() {return nf.name;}
const char *GetTypeName() {return "FPL";}
static u32 GetMissingErrorCode() { return SCE_KERNEL_ERROR_UNKNOWN_FPLID; }
@@ -400,7 +406,7 @@ public:
virtual void DoState(PointerWrap &p)
{
p.Do(address);
p.Do(name);
p.DoArray(name, sizeof(name));
p.DoMarker("PMB");
}
+20 -21
View File
@@ -23,25 +23,8 @@
// VTIMER
//////////////////////////////////////////////////////////////////////////
struct VTimer : public KernelObject
struct NativeVTimer
{
const char *GetName() {return name;}
const char *GetTypeName() {return "VTimer";}
static u32 GetMissingErrorCode() { return SCE_KERNEL_ERROR_UNKNOWN_VTID; }
int GetIDType() const { return SCE_KERNEL_TMID_VTimer; }
virtual void DoState(PointerWrap &p)
{
p.Do(size);
p.Do(name);
p.Do(startTime);
p.Do(running);
p.Do(handler);
p.Do(handlerTime);
p.Do(argument);
p.DoMarker("VTimer");
}
SceSize size;
char name[KERNELOBJECT_MAX_NAME_LENGTH+1];
u64 startTime;
@@ -51,6 +34,22 @@ struct VTimer : public KernelObject
u32 argument;
};
struct VTimer : public KernelObject
{
const char *GetName() {return nvt.name;}
const char *GetTypeName() {return "VTimer";}
static u32 GetMissingErrorCode() { return SCE_KERNEL_ERROR_UNKNOWN_VTID; }
int GetIDType() const { return SCE_KERNEL_TMID_VTimer; }
virtual void DoState(PointerWrap &p)
{
p.Do(nvt);
p.DoMarker("VTimer");
}
NativeVTimer nvt;
};
KernelObject *__KernelVTimerObject()
{
return new VTimer;
@@ -64,9 +63,9 @@ void sceKernelCreateVTimer()
VTimer *vt = new VTimer();
SceUID uid = kernelObjects.Create(vt);
strncpy(vt->name, name, 32);
vt->running = true;
vt->startTime = 0; //TODO fix
strncpy(vt->nvt.name, name, 32);
vt->nvt.running = true;
vt->nvt.startTime = 0; //TODO fix
RETURN(uid); //TODO: return timer ID
}