Index: lib/script/evntsave.c
===================================================================
--- lib/script/evntsave.c	(revision 740)
+++ lib/script/evntsave.c	(working copy)
@@ -85,9 +85,11 @@
 //not hashed			strcpy(pPos, pScriptID);
 //not hashed			pPos += strlen(pScriptID) + 1;
 			*((UDWORD*)pPos) = (UDWORD)hashedName;
+			endian_udword((UDWORD*)pPos);
 			pPos += sizeof(UDWORD);
 
 			*((SWORD*)pPos) = (SWORD)numVars;
+			endian_sword((SWORD*)pPos);
 			pPos += sizeof(SWORD);
 
 			*pPos = (UBYTE)psCCont->release;
@@ -109,7 +111,10 @@
 				{
 					ASSERT( psVal->type < SWORD_MAX,
 						"eventSaveContext: variable type number too big" );
+
 					*((SWORD*)pPos) = (SWORD)psVal->type;
+					endian_sword((SWORD*)pPos);
+
 					pPos += sizeof(SWORD);
 				}
 				size += sizeof(SWORD);
@@ -121,6 +126,8 @@
 					if (pBuffer != NULL)
 					{
 						*((UDWORD *)pPos) = (UDWORD)psVal->v.ival;	//TODO: make it save strings properly
+						endian_udword((UDWORD*)pPos);
+						
 						pPos += sizeof(UDWORD);
 					}
 
@@ -152,6 +159,8 @@
 					if (pBuffer != NULL)
 					{
 						*pValSize = (UWORD)valSize;
+						endian_uword((UWORD*)pValSize);
+
 						pPos += valSize;
 					}
 					size += valSize;
@@ -175,6 +184,7 @@
 	if (pBuffer != NULL)
 	{
 		*((SWORD *)pBuffer) = (SWORD)numContext;
+		endian_sword((SWORD*)pBuffer);
 	}
 	*pSize = size;
 
@@ -199,6 +209,7 @@
 	pPos = pBuffer;
 
 	// get the number of contexts in the save file
+	endian_sword((SWORD*)pPos);
 	numContext = *((SWORD *)pPos);
 	pPos += sizeof(SWORD);
 	size += sizeof(SWORD);
@@ -213,6 +224,9 @@
 
 		// check the number of variables
 		numVars = psCode->numGlobals + psCode->arraySize;
+
+		endian_sword((SWORD*)pPos);
+
 		if (numVars != *((SWORD*)pPos))
 		{
 			debug( LOG_ERROR, "eventLoadContext: number of context variables does not match the script code" );
@@ -239,6 +253,7 @@
 		for(i=0; i < numVars; i+= 1)
 		{
 			// get the variable type
+			endian_sword((SWORD*)pPos);
 			type = (INTERP_TYPE)*pPos;
 			pPos += sizeof(SWORD);
 			size += sizeof(SWORD);
@@ -246,6 +261,8 @@
 			// get the variable value
 			if (type < VAL_USERTYPESTART)
 			{
+				endian_udword((UDWORD*)pPos);
+
 				data.type = type;
 
 				switch (type) {
@@ -304,7 +321,9 @@
 				ASSERT( loadFunc != NULL,
 					"eventLoadContext: no load function for type %d\n", type );
 
+				endian_uword((UWORD*)pPos);
 				valSize = *((UWORD *)pPos);
+
 				pPos += sizeof(UWORD);
 				size += sizeof(UWORD);
 
@@ -354,6 +373,7 @@
 	pPos = pBuffer;
 
 	// get the number of contexts in the save file
+	endian_sword((SWORD *)pPos);
 	numContext = *((SWORD *)pPos);
 	pPos += sizeof(SWORD);
 	size += sizeof(SWORD);
@@ -365,6 +385,7 @@
 //notHashed		pScriptID = (char *)pPos;
 //notHashed		psCode = resGetData("SCRIPT", pScriptID);
 //notHashed		pPos += strlen(pScriptID) + 1;
+		endian_udword((UDWORD*)pPos);
 		hashedName = *((UDWORD*)pPos);
 		pPos += sizeof(UDWORD);
 		psCode = (SCRIPT_CODE*)resGetDataFromHash("SCRIPT", hashedName);
@@ -372,6 +393,7 @@
 
 		// check the number of variables
 		numVars = psCode->numGlobals + psCode->arraySize;
+		endian_sword((SWORD*)pPos);
 		if (numVars != *((SWORD*)pPos))
 		{
 			debug( LOG_ERROR, "eventLoadContext: number of context variables does not match the script code" );
@@ -398,6 +420,7 @@
 		for(i=0; i < numVars; i+= 1)
 		{
 			// get the variable type
+			endian_sword((SWORD*)pPos);
 			type = (INTERP_TYPE)*pPos;
 			pPos += sizeof(SWORD);
 			size += sizeof(SWORD);
@@ -405,48 +428,50 @@
 			// get the variable value
 			if (type < VAL_USERTYPESTART)
 			{
-        data.type = type;
+				endian_udword((UDWORD*)pPos);
 
-        switch (type) {
-          case VAL_BOOL:
-            data.v.bval = *((BOOL*)pPos);
-            pPos += sizeof(BOOL);
-            size += sizeof(BOOL);
-            break;
-          case VAL_FLOAT:
-            data.v.fval = *((float*)pPos);
-            pPos += sizeof(float);
-            size += sizeof(float);
-            break;
-          case VAL_INT:
-          case VAL_TRIGGER:
-          case VAL_EVENT:
-          case VAL_VOID:
-          case VAL_OPCODE:
-          case VAL_PKOPCODE:
-            data.v.ival = *((UDWORD *)pPos);
-            pPos += sizeof(UDWORD);
-            size += sizeof(UDWORD);
-            break;
-          case VAL_STRING:
-            data.v.sval = pPos;
-            pPos += sizeof(char*);
-            size += sizeof(char*);
-            break;
-          case VAL_OBJ_GETSET:
-            data.v.pObjGetSet = *((SCRIPT_VARFUNC*)pPos);
-            pPos += sizeof(SCRIPT_VARFUNC);
-            size += sizeof(SCRIPT_VARFUNC);
-            break;
-          case VAL_FUNC_EXTERN:
-            data.v.pFuncExtern = *((SCRIPT_FUNC*)pPos);
-            pPos += sizeof(SCRIPT_FUNC);
-            size += sizeof(SCRIPT_FUNC);
-            break;
-          default:
-            ASSERT( FALSE, "eventLoadContext: invalid internal type" );
-        }
+				data.type = type;
 
+				switch (type) {
+				  case VAL_BOOL:
+					data.v.bval = *((BOOL*)pPos);
+					pPos += sizeof(BOOL);
+					size += sizeof(BOOL);
+					break;
+				  case VAL_FLOAT:
+					data.v.fval = *((float*)pPos);
+					pPos += sizeof(float);
+					size += sizeof(float);
+					break;
+				  case VAL_INT:
+				  case VAL_TRIGGER:
+				  case VAL_EVENT:
+				  case VAL_VOID:
+				  case VAL_OPCODE:
+				  case VAL_PKOPCODE:
+					data.v.ival = *((UDWORD *)pPos);
+					pPos += sizeof(UDWORD);
+					size += sizeof(UDWORD);
+					break;
+				  case VAL_STRING:
+					data.v.sval = pPos;
+					pPos += sizeof(char*);
+					size += sizeof(char*);
+					break;
+				  case VAL_OBJ_GETSET:
+					data.v.pObjGetSet = *((SCRIPT_VARFUNC*)pPos);
+					pPos += sizeof(SCRIPT_VARFUNC);
+					size += sizeof(SCRIPT_VARFUNC);
+					break;
+				  case VAL_FUNC_EXTERN:
+					data.v.pFuncExtern = *((SCRIPT_FUNC*)pPos);
+					pPos += sizeof(SCRIPT_FUNC);
+					size += sizeof(SCRIPT_FUNC);
+					break;
+				  default:
+					ASSERT( FALSE, "eventLoadContext: invalid internal type" );
+				}
+
 				// set the value in the context
 				if (!eventSetContextVar(psCCont, (UDWORD)i, &data))
 				{
@@ -463,7 +488,9 @@
 				ASSERT( loadFunc != NULL,
 					"eventLoadContext: no load function for type %d\n", type );
 
+				endian_uword((UWORD*)pPos);
 				valSize = *((UWORD *)pPos);
+
 				pPos += sizeof(UWORD);
 				size += sizeof(UWORD);
 
@@ -557,6 +584,8 @@
 		if (pBuffer != NULL)
 		{
 			*((UDWORD*)pPos) = psCurr->testTime;
+			endian_udword((UDWORD*)pPos);
+
 			pPos += sizeof(UDWORD);
 			if (!eventGetContextIndex(psCurr->psContext, &context))
 			{
@@ -565,14 +594,19 @@
 				return FALSE;
 			}
 			*((SWORD*)pPos) = (SWORD)context;
+			endian_sword((SWORD*)pPos);
 			pPos += sizeof(SWORD);
 			*((SWORD*)pPos) = psCurr->type;
+			endian_sword((SWORD*)pPos);
 			pPos += sizeof(SWORD);
 			*((SWORD*)pPos) = psCurr->trigger;
+			endian_sword((SWORD*)pPos);
 			pPos += sizeof(SWORD);
 			*((UWORD*)pPos) = psCurr->event;
+			endian_uword((UWORD*)pPos);
 			pPos += sizeof(UWORD);
 			*((UWORD*)pPos) = psCurr->offset;
+			endian_uword((UWORD*)pPos);
 			pPos += sizeof(UWORD);
 		}
 		size += sizeof(UDWORD) + sizeof(SWORD)*3 + sizeof(UWORD)*2;
@@ -580,6 +614,7 @@
 	if (pBuffer != NULL)
 	{
 		*((SDWORD*)pBuffer) = numTriggers;
+		endian_sdword((SDWORD*)pBuffer);
 	}
 
 	*pSize = size;
@@ -696,6 +731,7 @@
 	psHdr->aFileType[2] = 'n';
 	psHdr->aFileType[3] = 't';
 	psHdr->version = version;
+	endian_udword(&psHdr->version);
 
 	pPos += sizeof(EVENT_SAVE_HDR);
 
@@ -753,6 +789,7 @@
 		DBERROR(("eventLoadState: invalid file version"));
 		return FALSE;
 	}*/
+	endian_udword(&psHdr->version);
 	version = psHdr->version;
 	pPos += sizeof(EVENT_SAVE_HDR);
 	totalSize += sizeof(EVENT_SAVE_HDR);
Index: src/scriptobj.c
===================================================================
--- src/scriptobj.c	(revision 740)
+++ src/scriptobj.c	(working copy)
@@ -683,6 +683,8 @@
 				ASSERT( psObj == (BASE_OBJECT *)psVal->v.oval,"scrValDefSave failed to find object, continue" );
 #endif
 			}
+
+			endian_udword((UDWORD*)pBuffer);
 		}
 		*pSize = sizeof(UDWORD);
 		break;
@@ -723,6 +725,7 @@
 			{
 				*((UDWORD*)pBuffer) = ((DROID_TEMPLATE *)psVal->v.oval)->multiPlayerID;
 			}
+			endian_udword((UDWORD*)pBuffer);
 		}
 		*pSize = sizeof(UDWORD);
 		break;
@@ -737,6 +740,7 @@
 			{
 				*((UDWORD*)pBuffer) = strresGetIDfromString(psStringRes, psVal->v.sval);
 			}
+			endian_udword((UDWORD*)pBuffer);
 		}
 		*pSize = sizeof(UDWORD);
 		break;
@@ -793,21 +797,29 @@
 
 			// store the run data
 			*((SDWORD *)pPos) = psGroup->sRunData.sPos.x;
+			endian_sdword((SDWORD*)pPos);
 			pPos += sizeof(SDWORD);
 			*((SDWORD *)pPos) = psGroup->sRunData.sPos.y;
+			endian_sdword((SDWORD*)pPos);
 			pPos += sizeof(SDWORD);
 			*((SDWORD *)pPos) = psGroup->sRunData.forceLevel;
+			endian_sdword((SDWORD*)pPos);
 			pPos += sizeof(SDWORD);
 			*((SDWORD *)pPos) = psGroup->sRunData.leadership;
+			endian_sdword((SDWORD*)pPos);
 			pPos += sizeof(SDWORD);
 			*((SDWORD *)pPos) = psGroup->sRunData.healthLevel;
+			endian_sdword((SDWORD*)pPos);
 			pPos += sizeof(SDWORD);
 
 			// now store the droids
 			for(psCDroid=((DROID_GROUP *)psVal->v.oval)->psList; psCDroid; psCDroid=psCDroid->psGrpNext)
 			{
 				checkValidId(psCDroid->id);
+
 				*((UDWORD *)pPos) = psCDroid->id;
+				endian_udword((UDWORD*)pPos);
+
 				pPos += sizeof(UDWORD);
 			}
 		}
@@ -828,6 +840,7 @@
 		if (pBuffer)
 		{
 			*((UDWORD *) pBuffer) = sound_GetTrackHashName((SDWORD)psVal->v.ival);
+			endian_udword((UDWORD*)pBuffer);
 		}
 		*pSize = sizeof(UDWORD);
 		break;
@@ -837,6 +850,7 @@
 		if (pBuffer)
 		{
 			*((UDWORD *)pBuffer) = psVal->v.ival;
+			endian_udword((UDWORD*)pBuffer);
 		}
 		*pSize = sizeof(UDWORD);
 		break;
@@ -878,7 +892,9 @@
 	case ST_DROID:
 	case ST_STRUCTURE:
 	case ST_FEATURE:
+		endian_udword((UDWORD*)pBuffer);
 		id = *((UDWORD *)pBuffer);
+
 		if (id == UDWORD_MAX)
 		{
 			psVal->v.oval = NULL;
@@ -996,7 +1012,9 @@
 		psVal->v.ival = index;
 		break;
 	case ST_TEMPLATE:
+		endian_udword((UDWORD*)pBuffer);
 		id = *((UDWORD *)pBuffer);
+
 		if (id == UDWORD_MAX)
 		{
 			psVal->v.oval = NULL;
@@ -1012,6 +1030,7 @@
 		}
 		break;
 	case ST_TEXTSTRING:
+		endian_udword((UDWORD*)pBuffer);
 		if (*((UDWORD *)pBuffer) == UDWORD_MAX)
 		{
 			psVal->v.sval = '\0';
@@ -1077,12 +1096,16 @@
 
 			// load the retreat data
 			psGroup = (DROID_GROUP*)(psVal->v.oval);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.sPos.x = *((SDWORD *)pPos);
 			pPos += sizeof(SDWORD);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.sPos.y = *((SDWORD *)pPos);
 			pPos += sizeof(SDWORD);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.forceLevel = (UBYTE)(*((SDWORD *)pPos));
 			pPos += sizeof(SDWORD);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.leadership = (UBYTE)(*((SDWORD *)pPos));
 			pPos += sizeof(SDWORD);
 		}
@@ -1093,14 +1116,19 @@
 
 			// load the retreat data
 			psGroup = (DROID_GROUP*)(psVal->v.oval);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.sPos.x = *((SDWORD *)pPos);
 			pPos += sizeof(SDWORD);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.sPos.y = *((SDWORD *)pPos);
 			pPos += sizeof(SDWORD);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.forceLevel = (UBYTE)(*((SDWORD *)pPos));
 			pPos += sizeof(SDWORD);
+			endian_sdword((SDWORD*)pPos);
 			psGroup->sRunData.leadership = (UBYTE)(*((SDWORD *)pPos));
 			pPos += sizeof(SDWORD);
+			endian_sdword((SDWORD*)pPos);
    			psGroup->sRunData.healthLevel = (UBYTE)(*((SDWORD *)pPos));
     		pPos += sizeof(SDWORD);
 		}
@@ -1108,6 +1136,7 @@
 		// load the droids
 		while (members > 0)
 		{
+			endian_udword((UDWORD*)pPos);
 			if (!scrvGetBaseObj(*((UDWORD*)pPos), (BASE_OBJECT **)&psCDroid))
 			{
 				debug( LOG_ERROR, "scrValDefLoad: couldn't find object id %d", *((UDWORD*)pBuffer) );
@@ -1124,6 +1153,7 @@
 		break;
 	case ST_SOUND:
 		// find audio id
+		endian_udword((UDWORD*)pBuffer);
 		index = audio_GetTrackIDFromHash( *((UDWORD *)pBuffer) );
 		if (index == SAMPLE_NOT_FOUND)
 		{
@@ -1145,6 +1175,7 @@
 	case ST_DROIDID:
 	default:
 		// just set the contents directly
+		endian_udword((UDWORD*)pBuffer);
 		psVal->v.ival = *((UDWORD *)pBuffer);
 		break;
 	}
