diff options
Diffstat (limited to 'backends/platform/ds/arm9/source/ramsave.cpp')
-rw-r--r-- | backends/platform/ds/arm9/source/ramsave.cpp | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/backends/platform/ds/arm9/source/ramsave.cpp b/backends/platform/ds/arm9/source/ramsave.cpp index a9f4e3d2fc..113dd5df72 100644 --- a/backends/platform/ds/arm9/source/ramsave.cpp +++ b/backends/platform/ds/arm9/source/ramsave.cpp @@ -17,7 +17,7 @@ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * + * */ #ifdef GBA_SRAM_SAVE @@ -53,18 +53,18 @@ DSSaveFile::DSSaveFile(SCUMMSave* s, bool compressed, u8* data) { ownsData = true; saveCompressed = false; // consolePrintf("Decompressed. name=%s size=%d (%d)", save.name, save.size, save.compressedSize); - + } else { ownsData = false; origHeader = s; } - + if (save.magic == (int) 0xBEEFCAFE) { save.isValid = true; } else { save.isValid = false; } - + isTempFile = false; eosReached = false; } @@ -80,7 +80,7 @@ DSSaveFile::~DSSaveFile() { } bool DSSaveFile::loadFromSaveRAM(vu8* address) { - + SCUMMSave newSave; for (int t = 0; t < (int) sizeof(newSave); t++) { @@ -91,13 +91,13 @@ bool DSSaveFile::loadFromSaveRAM(vu8* address) { newSave.isValid = true; *((u16 *) (0x4000204)) |= 0x3; - + saveData = new unsigned char[newSave.compressedSize]; - + for (int t = 0; t < (int) newSave.compressedSize; t++) { ((char *) (saveData))[t] = *(address + t + sizeof(newSave)); } - + if (ownsData) delete this->saveData; save = newSave; saveCompressed = true; @@ -107,7 +107,7 @@ bool DSSaveFile::loadFromSaveRAM(vu8* address) { return true; } - + return false; } @@ -116,11 +116,11 @@ void DSSaveFile::compress() { unsigned char* compBuffer = new unsigned char[(save.size * 110) / 100]; int compSize = LZ_Compress((u8 *) saveData, compBuffer, save.size); save.compressedSize = compSize; - - - + + + delete saveData; - + // Make the save smaller saveData = (u8 *) realloc(compBuffer, save.compressedSize); saveCompressed = true; @@ -131,39 +131,39 @@ int DSSaveFile::saveToSaveRAM(vu8* address) { unsigned char* compBuffer; bool failed; - + int compSize; - + compress(); - + compSize = save.compressedSize; compBuffer = saveData; - + if (DSSaveFileManager::instance()->getBytesFree() >= getRamUsage()) { DSSaveFileManager::instance()->addBytesFree(-getRamUsage()); - + // Write header for (int t = 0; t < sizeof(save); t++) { while (*(address + t) != ((char *) (&save))[t]) { *(address + t) = ((char *) (&save))[t]; } } - + // Write compressed buffer for (int t = sizeof(save); t < (int) sizeof(save) + compSize; t++) { while (*(address + t) != compBuffer[t - sizeof(save)]) { *(address + t) = compBuffer[t - sizeof(save)]; } } - + failed = false; } else { failed = true; } - + return failed? 0: compSize + sizeof(save); } @@ -181,7 +181,7 @@ uint32 DSSaveFile::read(void *buf, uint32 size) { } memcpy(buf, saveData + ptr, size); // consolePrintf("byte: %d ", ((u8 *) (buf))[0]); - + ptr += size; return size; } @@ -260,7 +260,7 @@ bool DSSaveFile::matches(const char *filename) { return false; } } - + void DSSaveFile::setName(char *name) { save.isValid = true; save.magic = 0xBEEFCAFE; @@ -269,7 +269,7 @@ void DSSaveFile::setName(char *name) { save.compressedSize = 0; saveData = new unsigned char[DS_MAX_SAVE_SIZE]; strcpy(save.name, name); - + if ((strstr(name, ".s99")) || (strstr(name, ".c"))) { isTempFile = true; } else { @@ -309,10 +309,10 @@ void DSSaveFile::deleteFile() { DSSaveFileManager::DSSaveFileManager() { instancePtr = this; - + *((u16 *) (0x4000204)) |= 0x3; swiWaitForVBlank(); - + loadAllFromSRAM(); } @@ -322,7 +322,7 @@ DSSaveFileManager::~DSSaveFileManager() { void DSSaveFileManager::loadAllFromSRAM() { int addr = 1; - + for (int r = 0; r < 8; r++) { gbaSave[r].deleteFile(); } @@ -343,7 +343,7 @@ void DSSaveFileManager::formatSram() { for (int r = 0; r < SRAM_SAVE_MAX; r++) { *(CART_RAM + r) = 0; } - + loadAllFromSRAM(); } @@ -369,7 +369,7 @@ DSSaveFile *DSSaveFileManager::openSavefile(const char* filename, bool saveOrLoa return gbaSave[r].clone(); } } - + if (saveOrLoad) { return makeSaveFile(filename, saveOrLoad); } else { @@ -429,20 +429,20 @@ void DSSaveFileManager::listSavefiles(const char *prefix, bool *marks, int num) } } } - + } */ DSSaveFile *DSSaveFileManager::makeSaveFile(const char *filename, bool saveOrLoad) { - + // Find a free save slot int r = 0; - + while ((r < 8) && (gbaSave[r].isValid())) { r++; } - + if ((r == 8) && (gbaSave[r].isValid())) { // No more saves return NULL; @@ -459,9 +459,9 @@ void DSSaveFileManager::flushToSaveRAM() { int cartAddr = 1; int s; int extraData = DSSaveFileManager::getExtraData(); - + *((u16 *) (0x4000204)) |= 0x3; - + swiWaitForVBlank(); int size = 0; @@ -471,20 +471,20 @@ void DSSaveFileManager::flushToSaveRAM() { if (!gbaSave[r].isTemp()) size += gbaSave[r].getRamUsage(); } } - + if (size <= SRAM_SAVE_MAX) { for (int r = 0; r < SRAM_SAVE_MAX; r++) { *(CART_RAM + r) = 0; } - + sramBytesFree = SRAM_SAVE_MAX; - + for (int r = 0; (r < 8); r++) { if (gbaSave[r].isValid() && (!gbaSave[r].isTemp())) { - + cartAddr += s = gbaSave[r].saveToSaveRAM(CART_RAM + cartAddr); - + /* if (s == 0) { consolePrintf("WARNING: Save didn't fit in cart RAM and has been lost!! Delete files and save again.", gbaSave[r].getName()); failed = true; @@ -495,7 +495,7 @@ void DSSaveFileManager::flushToSaveRAM() { consolePrintf("WARNING: Save didn't fit in cart RAM and has been lost!! Delete files and save again."); loadAllFromSRAM(); - + } DSSaveFileManager::setExtraData(extraData); |