All pastes #279418 Raw Edit

Tyler

public c v1 · immutable
·published 2006-12-15 00:37 UTC
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;}