aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/n64/pakfs_save_manager.h
diff options
context:
space:
mode:
authorFabio Battaglia2010-01-07 16:07:22 +0000
committerFabio Battaglia2010-01-07 16:07:22 +0000
commit8c03fffbf0c246b77b5d60604405aa898c58e6ea (patch)
tree3c868d5a102d8b6645cd136b4860103777630a0a /backends/platform/n64/pakfs_save_manager.h
parent9577a45cdd70ca7b9e471434478f9eba8e60374e (diff)
downloadscummvm-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.h21
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);