diff options
author | Fabio Battaglia | 2010-01-07 16:07:22 +0000 |
---|---|---|
committer | Fabio Battaglia | 2010-01-07 16:07:22 +0000 |
commit | 8c03fffbf0c246b77b5d60604405aa898c58e6ea (patch) | |
tree | 3c868d5a102d8b6645cd136b4860103777630a0a /backends/platform/n64/pakfs_save_manager.h | |
parent | 9577a45cdd70ca7b9e471434478f9eba8e60374e (diff) | |
download | scummvm-rg350-8c03fffbf0c246b77b5d60604405aa898c58e6ea.tar.gz scummvm-rg350-8c03fffbf0c246b77b5d60604405aa898c58e6ea.tar.bz2 scummvm-rg350-8c03fffbf0c246b77b5d60604405aa898c58e6ea.zip |
Nintendo64: Add FlashRAM support for saving if a compatible cart is available.
svn-id: r47126
Diffstat (limited to 'backends/platform/n64/pakfs_save_manager.h')
-rw-r--r-- | backends/platform/n64/pakfs_save_manager.h | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/backends/platform/n64/pakfs_save_manager.h b/backends/platform/n64/pakfs_save_manager.h index d3e4b94d39..d31e6fcfd8 100644 --- a/backends/platform/n64/pakfs_save_manager.h +++ b/backends/platform/n64/pakfs_save_manager.h @@ -28,7 +28,7 @@ #include <pakfs.h> // N64 PakFS library -bool deleteSaveGame(const char *filename); +bool pakfs_deleteSaveGame(const char *filename); class InPAKSave : public Common::InSaveFile { private: @@ -39,7 +39,7 @@ private: bool seek(int32 offs, int whence); public: - InPAKSave() : fd(0) { } + InPAKSave() : fd(NULL) { } ~InPAKSave() { if (fd != NULL) @@ -72,7 +72,7 @@ private: public: uint32 write(const void *buf, uint32 cnt); - OutPAKSave(const char *_filename) { + OutPAKSave(const char *_filename) : fd(NULL) { fd = pakfs_open(_filename, "w"); } @@ -85,7 +85,10 @@ public: } bool err() const { - return pakfs_error(fd); + if (fd) + return (pakfs_error(fd) == 1); + else + return true; } void clearErr() { pakfs_clearerr(fd); @@ -99,7 +102,13 @@ class PAKSaveManager : public Common::SaveFileManager { public: virtual Common::OutSaveFile *openForSaving(const Common::String &filename) { - return Common::wrapCompressedWriteStream(new OutPAKSave(filename.c_str())); + OutPAKSave *s = new OutPAKSave(filename.c_str()); + if (!s->err()) { + return Common::wrapCompressedWriteStream(s); + } else { + delete s; + return NULL; + } } virtual Common::InSaveFile *openForLoading(const Common::String &filename) { @@ -113,7 +122,7 @@ public: } virtual bool removeSavefile(const Common::String &filename) { - return ::deleteSaveGame(filename.c_str()); + return ::pakfs_deleteSaveGame(filename.c_str()); } virtual Common::StringList listSavefiles(const Common::String &pattern); |