misc.c
changeset 3933 a5f08e17f4a0
parent 3884 475989407ceb
child 3977 edb5b94e2094
equal deleted inserted replaced
3932:882af4997b60 3933:a5f08e17f4a0
   857 static void Load_MAPE(void)
   857 static void Load_MAPE(void)
   858 {
   858 {
   859 	uint size = MapSize();
   859 	uint size = MapSize();
   860 	uint i;
   860 	uint i;
   861 
   861 
   862 	for (i = 0; i != size;) {
   862 	if (CheckSavegameVersion(29)) {
   863 		uint8 buf[1024];
   863 		for (i = 0; i != size;) {
   864 		uint j;
   864 			uint8 buf[1024];
   865 
   865 			uint j;
   866 		SlArray(buf, lengthof(buf), SLE_UINT8);
   866 
   867 		for (j = 0; j != lengthof(buf); j++) {
   867 			SlArray(buf, lengthof(buf), SLE_UINT8);
   868 			_m[i++].extra = GB(buf[j], 0, 2);
   868 			for (j = 0; j != lengthof(buf); j++) {
   869 			_m[i++].extra = GB(buf[j], 2, 2);
   869 				_m[i++].extra = GB(buf[j], 0, 2);
   870 			_m[i++].extra = GB(buf[j], 4, 2);
   870 				_m[i++].extra = GB(buf[j], 2, 2);
   871 			_m[i++].extra = GB(buf[j], 6, 2);
   871 				_m[i++].extra = GB(buf[j], 4, 2);
       
   872 				_m[i++].extra = GB(buf[j], 6, 2);
       
   873 			}
   872 		}
   874 		}
       
   875 	} else {
       
   876 		for (i = 0; i != size;) {
       
   877 			byte buf[4096];
       
   878 			uint j;
       
   879 
       
   880 			SlArray(buf, lengthof(buf), SLE_UINT8);
       
   881 			for (j = 0; j != lengthof(buf); j++) _m[i++].extra = buf[j];
       
   882 		}
   873 	}
   883 	}
   874 }
   884 }
   875 
   885 
   876 static void Save_MAPE(void)
   886 static void Save_MAPE(void)
   877 {
   887 {
   878 	uint size = MapSize();
   888 	uint size = MapSize();
   879 	uint i;
   889 	uint i;
   880 
   890 
   881 	SlSetLength(size / 4);
   891 	SlSetLength(size);
   882 	for (i = 0; i != size;) {
   892 	for (i = 0; i != size;) {
   883 		uint8 buf[1024];
   893 		uint8 buf[4096];
   884 		uint j;
   894 		uint j;
   885 
   895 
   886 		for (j = 0; j != lengthof(buf); j++) {
   896 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].extra;
   887 			buf[j]  = _m[i++].extra << 0;
       
   888 			buf[j] |= _m[i++].extra << 2;
       
   889 			buf[j] |= _m[i++].extra << 4;
       
   890 			buf[j] |= _m[i++].extra << 6;
       
   891 		}
       
   892 		SlArray(buf, lengthof(buf), SLE_UINT8);
   897 		SlArray(buf, lengthof(buf), SLE_UINT8);
   893 	}
   898 	}
   894 }
   899 }
   895 
   900 
   896 
   901