549 static void Load_MAPE(void) |
549 static void Load_MAPE(void) |
550 { |
550 { |
551 uint size = MapSize(); |
551 uint size = MapSize(); |
552 uint i; |
552 uint i; |
553 |
553 |
554 for (i = 0; i != size;) { |
554 if (CheckSavegameVersion(42)) { |
555 uint8 buf[1024]; |
555 for (i = 0; i != size;) { |
556 uint j; |
556 uint8 buf[1024]; |
557 |
557 uint j; |
558 SlArray(buf, lengthof(buf), SLE_UINT8); |
558 |
559 for (j = 0; j != lengthof(buf); j++) { |
559 SlArray(buf, lengthof(buf), SLE_UINT8); |
560 _m[i++].extra = GB(buf[j], 0, 2); |
560 for (j = 0; j != lengthof(buf); j++) { |
561 _m[i++].extra = GB(buf[j], 2, 2); |
561 _m[i++].extra = GB(buf[j], 0, 2); |
562 _m[i++].extra = GB(buf[j], 4, 2); |
562 _m[i++].extra = GB(buf[j], 2, 2); |
563 _m[i++].extra = GB(buf[j], 6, 2); |
563 _m[i++].extra = GB(buf[j], 4, 2); |
|
564 _m[i++].extra = GB(buf[j], 6, 2); |
|
565 } |
564 } |
566 } |
|
567 } else { |
|
568 for (i = 0; i != size;) { |
|
569 byte buf[4096]; |
|
570 uint j; |
|
571 |
|
572 SlArray(buf, lengthof(buf), SLE_UINT8); |
|
573 for (j = 0; j != lengthof(buf); j++) _m[i++].extra = buf[j]; |
|
574 } |
565 } |
575 } |
566 } |
576 } |
567 |
577 |
568 static void Save_MAPE(void) |
578 static void Save_MAPE(void) |
569 { |
579 { |
570 uint size = MapSize(); |
580 uint size = MapSize(); |
571 uint i; |
581 uint i; |
572 |
582 |
573 SlSetLength(size / 4); |
583 SlSetLength(size); |
574 for (i = 0; i != size;) { |
584 for (i = 0; i != size;) { |
575 uint8 buf[1024]; |
585 uint8 buf[4096]; |
576 uint j; |
586 uint j; |
577 |
587 |
578 for (j = 0; j != lengthof(buf); j++) { |
588 for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].extra; |
579 buf[j] = _m[i++].extra << 0; |
|
580 buf[j] |= _m[i++].extra << 2; |
|
581 buf[j] |= _m[i++].extra << 4; |
|
582 buf[j] |= _m[i++].extra << 6; |
|
583 } |
|
584 SlArray(buf, lengthof(buf), SLE_UINT8); |
589 SlArray(buf, lengthof(buf), SLE_UINT8); |
585 } |
590 } |
586 } |
591 } |
587 |
592 |
588 |
593 |