From 5ce67a67e198f566ced39a1cdbf11b41dc850a3b Mon Sep 17 00:00:00 2001 From: Neil Millstone Date: Sat, 19 Aug 2006 11:11:18 +0000 Subject: Fixed bug causing crash during saving in Saga engine, changed audio to low quality. svn-id: r23726 --- backends/platform/ds/arm9/source/gbampsave.cpp | 19 +++++++++++++++---- backends/platform/ds/arm9/source/gbampsave.h | 2 +- backends/platform/ds/arm9/source/osystem_ds.cpp | 2 +- backends/platform/ds/arm9/source/ramsave.cpp | 3 +++ 4 files changed, 20 insertions(+), 6 deletions(-) (limited to 'backends/platform/ds/arm9/source') diff --git a/backends/platform/ds/arm9/source/gbampsave.cpp b/backends/platform/ds/arm9/source/gbampsave.cpp index 714ab7e2bb..d2dfc910f4 100644 --- a/backends/platform/ds/arm9/source/gbampsave.cpp +++ b/backends/platform/ds/arm9/source/gbampsave.cpp @@ -27,7 +27,7 @@ GBAMPSaveFile::GBAMPSaveFile(char* name, bool saveOrLoad) { handle = DS::std_fopen(name, saveOrLoad? "w": "r"); - //consolePrintf("%s handle is %d\n", name, handle); +// consolePrintf("%s handle is %d\n", name, handle); // consolePrintf("Created %s\n", name); bufferPos = 0; saveSize = 0; @@ -36,7 +36,7 @@ GBAMPSaveFile::GBAMPSaveFile(char* name, bool saveOrLoad) { GBAMPSaveFile::~GBAMPSaveFile() { flushSaveBuffer(); - DS::std_fclose(handle); + if (handle) DS::std_fclose(handle); } uint32 GBAMPSaveFile::read(void *buf, uint32 size) { @@ -143,11 +143,22 @@ Common::SaveFile* GBAMPSaveFileManager::openSavefile(char const* name, bool save } // consolePrintf(fileSpec); - - return new GBAMPSaveFile(fileSpec, saveOrLoad); + GBAMPSaveFile* sf = new GBAMPSaveFile(fileSpec, saveOrLoad); + if (sf->isOpen()) { + return sf; + } else { + delete sf; + return NULL; + } } void GBAMPSaveFileManager::listSavefiles(char const* prefix, bool* marks, int num) { + memset(marks, true, num * sizeof(bool)); + return; + + // Seems like I misunderstood what this function was supposed to do. + // I thought I was meant to set the marks[] array according to which + // saves are present on disk. enum { TYPE_NO_MORE = 0, TYPE_FILE = 1, TYPE_DIR = 2 }; char name[128]; char path[128]; diff --git a/backends/platform/ds/arm9/source/gbampsave.h b/backends/platform/ds/arm9/source/gbampsave.h index 8bc90fa8f8..9727a7c1aa 100644 --- a/backends/platform/ds/arm9/source/gbampsave.h +++ b/backends/platform/ds/arm9/source/gbampsave.h @@ -50,7 +50,7 @@ public: void flushSaveBuffer(); virtual bool isOpen() const { - return true; + return handle != 0; } }; diff --git a/backends/platform/ds/arm9/source/osystem_ds.cpp b/backends/platform/ds/arm9/source/osystem_ds.cpp index 64725ac7ec..0d3e1fdd75 100644 --- a/backends/platform/ds/arm9/source/osystem_ds.cpp +++ b/backends/platform/ds/arm9/source/osystem_ds.cpp @@ -51,7 +51,7 @@ OSystem_DS::~OSystem_DS() { void OSystem_DS::initBackend() { ConfMan.setInt("autosave_period", 0); - ConfMan.setBool("FM_medium_quality", true); + ConfMan.setBool("FM_low_quality", true); } bool OSystem_DS::hasFeature(Feature f) { diff --git a/backends/platform/ds/arm9/source/ramsave.cpp b/backends/platform/ds/arm9/source/ramsave.cpp index 87aaad85ed..3f2791839a 100644 --- a/backends/platform/ds/arm9/source/ramsave.cpp +++ b/backends/platform/ds/arm9/source/ramsave.cpp @@ -382,6 +382,9 @@ void DSSaveFileManager::deleteFile(char* name) { } void DSSaveFileManager::listSavefiles(const char *prefix, bool *marks, int num) { + memset(marks, true, num * sizeof(bool)); + return; + memset(marks, false, num*sizeof(bool)); for (int saveNum = 0; saveNum < num; saveNum++) { -- cgit v1.2.3