mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-07 11:36:18 +02:00
Merge pull request #284 from unknownbrackets/savestates
Fix some missing things / bugs in save states.
This commit is contained in:
commit
af73ac11d3
7 files changed
+42
-23
No files matched your search
@@ -208,6 +208,7 @@ int PSPMsgDialog::Shutdown()
|
||||
|
||||
void PSPMsgDialog::DoState(PointerWrap &p)
|
||||
{
|
||||
PSPDialog::DoState(p);
|
||||
p.Do(display);
|
||||
p.Do(messageDialog);
|
||||
p.Do(messageDialogAddr);
|
||||
|
||||
@@ -236,6 +236,7 @@ int PSPOskDialog::Update()
|
||||
|
||||
void PSPOskDialog::DoState(PointerWrap &p)
|
||||
{
|
||||
PSPDialog::DoState(p);
|
||||
p.Do(oskParams);
|
||||
p.Do(oskData);
|
||||
p.Do(oskDesc);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user