Ticket #377: transeffect.diff

File transeffect.diff, 6.4 KB (added by eriktorbjorn, 22 years ago)

Experimental patch. Don't apply this to CVS yet.

  • scummvm/costume.cpp

    diff -ur ScummVM-cvs20020729/scummvm/costume.cpp ScummVM-cvs20020729+hack/scummvm/costume.cpp
    old new  
    390390                        if (color && y < scrheight) {
    391391                                pcolor = _palette[color];
    392392                                if (pcolor == 13) {
    393                                         pcolor = _transEffect[*dst];
     393                                        pcolor = _vm->_transEffect[*dst];
    394394                                }
    395395                                *dst = pcolor;
    396396                        }
     
    440440                        if (color && y < scrheight && !(*mask & maskbit)) {
    441441                                pcolor = _palette[color];
    442442                                if (pcolor == 13)
    443                                         pcolor = _transEffect[*dst];
     443                                        pcolor = _vm->_transEffect[*dst];
    444444                                *dst = pcolor;
    445445                        }
    446446                        dst += 320;
     
    503503                        if (color && y < scrheight && !((*mask | mask[_imgbufoffs]) & maskbit)) {
    504504                                pcolor = _palette[color];
    505505                                if (pcolor == 13)
    506                                         pcolor = _transEffect[*dst];
     506                                        pcolor = _vm->_transEffect[*dst];
    507507                                *dst = pcolor;
    508508                        }
    509509                        dst += 320;
     
    566566                                if (color && y < _outheight && !((*mask | mask[_imgbufoffs]) & maskbit)) {
    567567                                        pcolor = _palette[color];
    568568                                        if (pcolor == 13)
    569                                                 pcolor = _transEffect[*dst];
     569                                                pcolor = _vm->_transEffect[*dst];
    570570                                        *dst = pcolor;
    571571                                }
    572572                                dst += 320;
     
    627627                                if (color && y < _outheight && !(*mask & maskbit)) {
    628628                                        pcolor = _palette[color];
    629629                                        if (pcolor == 13)
    630                                                 pcolor = _transEffect[*dst];
     630                                                pcolor = _vm->_transEffect[*dst];
    631631                                        *dst = pcolor;
    632632                                }
    633633                                dst += 320;
     
    691691                                if (color && y < _outheight) {
    692692                                        pcolor = _palette[color];
    693693                                        if (pcolor == 13)
    694                                                 pcolor = _transEffect[*dst];
     694                                                pcolor = _vm->_transEffect[*dst];
    695695                                        *dst = pcolor;
    696696                                }
    697697                                dst += 320;
     
    748748                        if (color && x >= 0 && x < 320) {
    749749                                pcolor = _palette[color];
    750750/*                                if (pcolor == 13) {
    751                                         pcolor = _transEffect[*dst];
     751                                        pcolor = _vm->_transEffect[*dst];
    752752                                }*/
    753753                                *dst = pcolor;
    754754                        }
     
    798798                        if (color && x >=0 && x < 320 && !(*mask & maskbit)) {
    799799                                pcolor = _palette[color];
    800800/*                                if (pcolor == 13)
    801                                         pcolor = _transEffect[*dst];*/
     801                                        pcolor = _vm->_transEffect[*dst];*/
    802802                                *dst = pcolor;
    803803                        }
    804804                        dst += step;
     
    864864                        if (color && x >= 0 && x < 320 && !((*mask | mask[_imgbufoffs]) & maskbit)) {
    865865                                pcolor = _palette[color];
    866866/*                                if (pcolor == 13)
    867                                         pcolor = _transEffect[*dst];*/
     867                                        pcolor = _vm->_transEffect[*dst];*/
    868868                                *dst = pcolor;
    869869                        }
    870870                        dst += step;
     
    928928                                if (color && _xpos >= 0 && _xpos < 320 && !((*mask | mask[_imgbufoffs]) & maskbit)) {
    929929                                        pcolor = _palette[color];
    930930/*                                        if (pcolor == 13)
    931                                                 pcolor = _transEffect[*dst];*/
     931                                                pcolor = _vm->_transEffect[*dst];*/
    932932                                        *dst = pcolor;
    933933                                }
    934934
     
    993993                                if (color && _xpos >= 0 && _xpos < 320 && !(*mask & maskbit)) {
    994994                                        pcolor = _palette[color];
    995995/*                                        if (pcolor == 13)
    996                                                 pcolor = _transEffect[*dst];*/
     996                                                pcolor = _vm->_transEffect[*dst];*/
    997997                                        *dst = pcolor;
    998998                                }
    999999                                t = _scaleIndexX;
     
    10621062                                if (color && _xpos >= 0 && _xpos < 320) {
    10631063                                        pcolor = _palette[color];
    10641064/*                                        if (pcolor == 13)
    1065                                                 pcolor = _transEffect[*dst];*/
     1065                                                pcolor = _vm->_transEffect[*dst];*/
    10661066                                        *dst = pcolor;
    10671067                                }
    10681068
  • scummvm/costume.h

    diff -ur ScummVM-cvs20020729/scummvm/costume.h ScummVM-cvs20020729+hack/scummvm/costume.h
    old new  
    8181        byte _repcolor;
    8282        byte _replen;
    8383        byte _palette[32];
    84         byte _transEffect[0x100];
    8584
    8685        void proc6();
    8786        void proc5();
  • scummvm/script_v1.cpp

    diff -ur ScummVM-cvs20020729/scummvm/script_v1.cpp ScummVM-cvs20020729+hack/scummvm/script_v1.cpp
    old new  
    19891989                _opcode = fetchScriptByte();
    19901990                d = getVarOrDirectByte(0x80);
    19911991                e = getVarOrDirectByte(0x40);
    1992                 unkRoomFunc3(d, e, a, b, c);
     1992                setupTransEffect(d, e, a, b, c);
    19931993                break;
    19941994
    19951995        case 13:{                                                                               /* save-string */
  • scummvm/script_v2.cpp

    diff -ur ScummVM-cvs20020729/scummvm/script_v2.cpp ScummVM-cvs20020729+hack/scummvm/script_v2.cpp
    old new  
    18621862                c = pop();
    18631863                b = pop();
    18641864                a = pop();
    1865                 unkRoomFunc3(d, e, a, b, c);
     1865                setupTransEffect(d, e, a, b, c);
    18661866                break;
    18671867
    18681868        case 184:
  • scummvm/scumm.h

    diff -ur ScummVM-cvs20020729/scummvm/scumm.h ScummVM-cvs20020729+hack/scummvm/scumm.h
    old new  
    464464        byte _numObjectsInRoom;
    465465        int8 _userPut;
    466466        int _resourceHeaderSize;
    467         void unkRoomFunc3(int a, int b, int c, int d, int e);
     467        void setupTransEffect(int a, int b, int c, int d, int e);
    468468        void palManipulate(int a, int b, int c, int d, int e);
    469469        void setScaleItem(int slot, int a, int b, int c, int d);
    470470        void clearClickedStatus();
     
    940940        byte _drawObjectQue[200];
    941941        int16 _palManipStart, _palManipEnd, _palManipCounter;
    942942        uint32 gfxUsageBits[200];
     943        byte _transEffect[0x100];
    943944        byte *_shadowPalette;
    944945        int _shadowPaletteSize;
    945946        byte _currentPalette[0x300];
  • scummvm/scummvm.cpp

    diff -ur ScummVM-cvs20020729/scummvm/scummvm.cpp ScummVM-cvs20020729+hack/scummvm/scummvm.cpp
    old new  
    800800        return a;
    801801}
    802802
    803 void Scumm::unkRoomFunc3(int a, int b, int c, int d, int e)
     803void Scumm::setupTransEffect(int minColor, int maxColor, int rscale, int gscale, int bscale)
    804804{
    805         warning("stub unkRoomFunc3(%d,%d,%d,%d,%d)", a, b, c, d, e);
    806 }
     805        int i;
     806
     807        warning("former unkRoomFunc3(%d,%d,%d,%d,%d)", minColor, maxColor, rscale, gscale, bscale);
    807808
     809        for (i = minColor; i <= maxColor; i++) {
     810                byte *pal = _currentPalette + (i * 3);
     811                int r = (int) (*pal++ * rscale) / 255;
     812                int g = (int) (*pal++ * gscale) / 255;
     813                int b = (int) (*pal++ * bscale) / 255;
     814
     815                if (r > 255)
     816                        r = 255;
     817                if (g > 255)
     818                        g = 255;
     819                if (b > 255)
     820                        b = 255;
     821
     822                _transEffect[i] = RGBMatch(_currentPalette, r, g, b);
     823        }
     824}
    808825
    809826void Scumm::palManipulate(int palettes, int brightness, int color, int time, int e)
    810827{