Ticket #8002: greatloom.diff

File greatloom.diff, 1.6 KB (added by eriktorbjorn, 22 years ago)

Patch which uses _shadowPalette

  • scummvm/script_v1.cpp

    diff -ur ScummVM-cvs20020804/scummvm/script_v1.cpp ScummVM-cvs20020804+hack/scummvm/script_v1.cpp
    old new  
    19221922                                b = getVarOrDirectWord(0x40);
    19231923                        }
    19241924                        checkRange(256, 0, a, "o5_roomOps: 2: Illegal room color slot (%d)");
    1925                         _shadowPalette[a] = b;
    1926                         //        _fullRedraw = 1;
     1925                        _shadowPalette[b] = a;
     1926                        setDirtyColors(b, b);
    19271927                } else {
    19281928                        a = getVarOrDirectWord(0x80);
    19291929                        b = getVarOrDirectWord(0x40);
  • scummvm/scummvm.cpp

    diff -ur ScummVM-cvs20020804/scummvm/scummvm.cpp ScummVM-cvs20020804+hack/scummvm/scummvm.cpp
    old new  
    13791379        int first = _palDirtyMin;
    13801380        int num = _palDirtyMax - first + 1;
    13811381        int i;
    1382         byte *data = _currentPalette + first * 3;
    13831382
    13841383        byte palette_colors[1024],*p = palette_colors;
    13851384
    13861385        // Sam & Max film noir mode
    13871386        if (_gameId == GID_SAMNMAX && readVar(0x8000))
    13881387                desaturatePalette();
    1389        
    1390         for (i = 0; i != num; i++, data += 3, p+=4) {
    1391                 p[0] = data[0];
    1392                 p[1] = data[1];
    1393                 p[2] = data[2];
    1394                 p[3] = 0;
     1388
     1389        for (i = _palDirtyMin; i <= _palDirtyMax; i++) {
     1390                byte *data;
     1391
     1392                if (_features & GF_SMALL_HEADER)
     1393                        data = _currentPalette + _shadowPalette[i] * 3;
     1394                else
     1395                        data = _currentPalette + i * 3;
     1396
     1397                *p++ = data[0];
     1398                *p++ = data[1];
     1399                *p++ = data[2];
     1400                *p++ = 0;
    13951401        }
    13961402       
    13971403        _system->set_palette(palette_colors, first, num);