diff options
-rw-r--r-- | backends/module.mk | 1 | ||||
-rw-r--r-- | backends/platform/psp/osys_psp.cpp | 16 | ||||
-rw-r--r-- | backends/saves/psp/psp-saves.cpp | 62 | ||||
-rw-r--r-- | backends/saves/psp/psp-saves.h | 51 |
4 files changed, 116 insertions, 14 deletions
diff --git a/backends/module.mk b/backends/module.mk index 5f4b681f7b..fb2b149648 100644 --- a/backends/module.mk +++ b/backends/module.mk @@ -31,6 +31,7 @@ MODULE_OBJS := \ saves/default/default-saves.o \ saves/compressed/compressed-saves.o \ saves/posix/posix-saves.o \ + saves/psp/psp-saves.o \ timer/default/default-timer.o # Include common rules diff --git a/backends/platform/psp/osys_psp.cpp b/backends/platform/psp/osys_psp.cpp index 9c2bacfef6..52d0913a4b 100644 --- a/backends/platform/psp/osys_psp.cpp +++ b/backends/platform/psp/osys_psp.cpp @@ -30,7 +30,7 @@ #include "osys_psp.h" -#include "backends/saves/default/default-saves.h" +#include "backends/saves/psp/psp-saves.h" #include "backends/timer/default/default-timer.h" #include "graphics/surface.h" #include "graphics/scaler.h" @@ -98,19 +98,7 @@ OSystem_PSP::~OSystem_PSP() { void OSystem_PSP::initBackend() { - _savefile = new DefaultSaveFileManager("ms0:/scummvm_savegames"); - - const char *savePath = _savefile->getSavePath().c_str(); - - //check if the save directory exists - SceUID fd = sceIoDopen(savePath); - if (fd < 0) { - //No? then let's create it. - sceIoMkdir(savePath, 0777); - } else { - //it exists, so close it again. - sceIoDclose(fd); - } + _savefile = new PSPSaveFileManager; _timer = new DefaultTimerManager(); setTimerCallback(&timer_handler, 10); diff --git a/backends/saves/psp/psp-saves.cpp b/backends/saves/psp/psp-saves.cpp new file mode 100644 index 0000000000..98384a4ed3 --- /dev/null +++ b/backends/saves/psp/psp-saves.cpp @@ -0,0 +1,62 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL: $ + * $Id: $ + * + */ + +#ifdef __PSP__ + +#include "backends/saves/psp/psp-saves.h" + +#include "common/config-manager.h" +#include "common/savefile.h" + + +#define PSP_DEFAULT_SAVE_PATH "ms0:/scummvm_savegames" + + +PSPSaveFileManager::PSPSaveFileManager() { + // Register default savepath + ConfMan.registerDefault("savepath", PSP_DEFAULT_SAVE_PATH); +} +/* +PSPSaveFileManager::PSPSaveFileManager(const Common::String &defaultSavepath) + : DefaultSaveFileManager(defaultSavepath) { +} +*/ + +void PSPSaveFileManager::checkPath(const Common::FSNode &dir) { + const char *savePath = dir.getPath().c_str(); + clearError(); + + //check if the save directory exists + SceUID fd = sceIoDopen(savePath); + if (fd < 0) { + //No? then let's create it. + sceIoMkdir(savePath, 0777); + } else { + //it exists, so close it again. + sceIoDclose(fd); + } +} +#endif + diff --git a/backends/saves/psp/psp-saves.h b/backends/saves/psp/psp-saves.h new file mode 100644 index 0000000000..76ecf855e6 --- /dev/null +++ b/backends/saves/psp/psp-saves.h @@ -0,0 +1,51 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL: $ + * $Id: $ + * + */ + +#ifndef BACKEND_PSP_SAVES_H +#define BACKEND_PSP_SAVES_H + +#include "backends/saves/default/default-saves.h" + +/** + * Customization of the DefaultSaveFileManager for the PSP platform. + * The only two differences are that the default constructor sets + * up a default savepath, and that checkPath tries to create the savedir, + * if missing, via the sceIoMkdir() call. + */ +class PSPSaveFileManager : public DefaultSaveFileManager { +public: + PSPSaveFileManager(); +// PSPSaveFileManager(const Common::String &defaultSavepath); + +protected: + /** + * Checks the given path for read access, existence, etc. + * In addition, tries to create a missing savedir, if possible. + * Sets the internal error and error message accordingly. + */ + virtual void checkPath(const Common::FSNode &dir); +}; + +#endif |