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 |