rendered paste body#include <tigcclib.h>#include "include.h"GAMESCORES Scores;GAMEPROFILES Profiles;GAMESETTINGS Settings;/* Load Save File */void LoadSaveFile(void){ GAMESAVE *LoadData; SYM_ENTRY *LoadEntry; memcpy(&Scores, 0, sizeof(GAMESCORES)); memcpy(&Profiles, 0, sizeof(GAMEPROFILES)); memcpy(&Settings, 0, sizeof(GAMESETTINGS)); LoadEntry = SymFindPtr(SYMSTR("starbsav"), 0); // Error Testing if (!LoadEntry) return; if (!LoadEntry->handle) return; LoadData = HeapDeref(LoadEntry->handle); memcpy(&Scores, &LoadData->Scores, sizeof(GAMESCORES)); memcpy(&Profiles, &LoadData->Profiles, sizeof(GAMEPROFILES)); memcpy(&Settings, &LoadData->Settings, sizeof(GAMESETTINGS));}short WriteSaveFile(void){ GAMESAVE *WriteData; HSym SaveSym; // VAT Symbol SYM_ENTRY *SaveEntry; // File Information HANDLE SaveHandle; // File Data // If exists, unarchive and realloc if ((SaveSym = SymFind(SYMSTR("starbsav"))).folder) { if (DerefSym(SaveSym)->flags.bits.archived) EM_moveSymFromExtMem(NULL, SaveSym); // Unarchive SaveSym = SymFind(SYMSTR("starbsav")); SaveHandle = HeapRealloc(SymFindPtr(SYMSTR("starbsav"), 0)->handle, sizeof(GAMESAVE)); } // Create and Alloc else { SaveSym = SymAdd(SYMSTR("starbsav")); if (!SaveSym.folder) return 0; SaveHandle = HeapAlloc(sizeof(GAMESAVE)); } // Did it Re/Allocate? if (!SaveHandle) { SymDel(SYMSTR("starbsav")); return 0; } WriteData = HeapDeref(SaveHandle); // Get size than save WriteData->size = sizeof(GAMESCORES) + sizeof(GAMEPROFILES) + sizeof(GAMESETTINGS) + 7; memcpy(&WriteData->Scores, &Scores, sizeof(GAMESCORES)); memcpy(&WriteData->Profiles, &Profiles, sizeof(GAMEPROFILES)); memcpy(&WriteData->Settings, &Settings, sizeof(GAMESETTINGS)); memcpy(&WriteData->othtag, (const char []){0,'S','T','A','R',0,0xF8}, 7); // Save to Heap now SaveEntry = DerefSym(SaveSym); SaveEntry->handle = SaveHandle; // Archive if (!InHighLevel) SetIntLevel(HIGH_LVL); memcpy(GameGfx.HiddenDark, GameGfx.ActiveDark, LCD_SIZE); // Save Dark Buffer memcpy(GameGfx.HiddenLight, GameGfx.ActiveLight, LCD_SIZE); // Save Light Buffer EM_moveSymToExtMem(NULL, SaveSym); // Archive File memcpy(GameGfx.ActiveDark, GameGfx.HiddenDark, LCD_SIZE); // Restore Dark Buffer memcpy(GameGfx.ActiveLight, GameGfx.HiddenLight, LCD_SIZE); // Restore Light Buffer return 1;}