Ticket #1502: comi_905833.diff

File comi_905833.diff, 3.2 KB (added by cyxx, 19 years ago)
  • scumm/palette.cpp

    RCS file: /cvsroot/scummvm/scummvm/scumm/palette.cpp,v
    retrieving revision 2.45
    diff -u -r2.45 palette.cpp
     
    269269                }
    270270        }
    271271
    272         if (_heversion >= 90) {
     272        if (_heversion >= 90 || _version == 8) {
    273273                memcpy(_darkenPalette, _currentPalette, 768);
    274274        }
    275275
     
    674674                const byte *palptr;
    675675                int color, idx, j;
    676676
    677                 if (_heversion >= 90) {
     677                if (_heversion >= 90 || _version == 8) {
    678678                        palptr = _darkenPalette;
    679679                } else {
    680680                        palptr = getPalettePtr(_curPalIndex, _roomResource);
     
    737737                byte *cur;
    738738                int j;
    739739
    740                 cptr = getPalettePtr(_curPalIndex, _roomResource) + startColor * 3;
     740                cptr = _darkenPalette + startColor * 3;
    741741                cur = _currentPalette + startColor * 3;
    742742
    743743                for (j = startColor; j <= endColor; j++) {
     
    809809        int i;
    810810        int ar, ag, ab;
    811811        uint sum, bestsum, bestitem = 0;
    812         byte *pal = _currentPalette;
     812        byte *pal = _currentPalette + 24 * 3;
    813813
    814814        if (r > 255)
    815815                r = 255;
     
    824824        g &= ~3;
    825825        b &= ~3;
    826826
    827         for (i = 0; i < 256; i++, pal += 3) {
     827        for (i = 24; i < 256; i++, pal += 3) {
    828828                ar = pal[0] & ~3;
    829829                ag = pal[1] & ~3;
    830830                ab = pal[2] & ~3;
     
    901901        _currentPalette[idx * 3 + 0] = r;
    902902        _currentPalette[idx * 3 + 1] = g;
    903903        _currentPalette[idx * 3 + 2] = b;
     904        if (_version == 8) {
     905                _darkenPalette[idx * 3 + 0] = r;
     906                _darkenPalette[idx * 3 + 1] = g;
     907                _darkenPalette[idx * 3 + 2] = b;
     908        }
    904909        setDirtyColors(idx, idx);
    905910}
    906911
  • scumm/saveload.cpp

    RCS file: /cvsroot/scummvm/scummvm/scumm/saveload.cpp,v
    retrieving revision 1.225
    diff -u -r1.225 saveload.cpp
     
    605605
    606606                MK_OBSOLETE(ScummEngine, gdi._transparentColor, sleByte, VER(8), VER(50)),
    607607                MKARRAY(ScummEngine, _currentPalette[0], sleByte, 768, VER(8)),
     608                MKARRAY(ScummEngine, _darkenPalette[0], sleByte, 768, VER(53)),
    608609
    609610                // Sam & Max specific palette replaced by _shadowPalette now.
    610611                MK_OBSOLETE_ARRAY(ScummEngine, _proc_special_palette[0], sleByte, 256, VER(8), VER(33)),
     
    915916                s->saveLoadArrayOf(_palManipPalette, 0x300, 1, sleByte);
    916917                s->saveLoadArrayOf(_palManipIntermediatePal, 0x600, 1, sleByte);
    917918        }
     919       
     920        // darkenPalette was not saved before V53
     921        if (s->isLoading() && savegameVersion < VER(53)) {
     922                memcpy(_darkenPalette, _currentPalette, 768);
     923        }
    918924
    919925
    920926        //
  • scumm/saveload.h

    RCS file: /cvsroot/scummvm/scummvm/scumm/saveload.h,v
    retrieving revision 1.59
    diff -u -r1.59 saveload.h
     
    4545 * only saves/loads those which are valid for the version of the savegame
    4646 * which is being loaded/saved currently.
    4747 */
    48 #define CURRENT_VER 52
     48#define CURRENT_VER 53
    4949
    5050/**
    5151 * An auxillary macro, used to specify savegame versions. We use this instead