Ticket #9049: patchpalette.diff

File patchpalette.diff, 3.0 KB (added by SF/nolange, 10 years ago)

Patch for choosing palette through rendermode

  • engines/scumm/scumm.cpp

     
    494494        case Common::kRenderCGA:
    495495        case Common::kRenderEGA:
    496496        case Common::kRenderAmiga:
    497                 if ((_game.version >= 4 && !(_game.features & GF_16COLOR)) || (_game.features & GF_OLD256))
     497                if ((_game.version >= 4 && !(_game.features & GF_16COLOR)
     498                        && !(_game.platform == Common::kPlatformAmiga && _renderMode == Common::kRenderEGA))
     499                        || (_game.features & GF_OLD256))
    498500                        _renderMode = Common::kRenderDefault;
    499501                break;
    500502
  • engines/scumm/scumm.h

     
    10181018        void setC64Palette();
    10191019        void setNESPalette();
    10201020        void setAmigaPalette();
     1021        void setAmigaMIPalette();
    10211022        void setHercPalette();
    10221023        void setCGAPalette();
    10231024        void setEGAPalette();
  • engines/scumm/palette.cpp

     
    7070                        else
    7171                                setEGAPalette();
    7272                }
    73         } else
     73        } else {
     74                if ((_game.platform == Common::kPlatformAmiga) && _game.version == 4) {
     75                        // if rendermode is set to EGA we use the full palette from the resources
     76                        // else we initialise and then lock down the first 16 colors.
     77                        if (_renderMode != Common::kRenderEGA)
     78                                setAmigaMIPalette();
     79                }
    7480                setDirtyColors(0, 255);
     81        }
    7582}
    7683
    7784void ScummEngine::setC64Palette() {
     
    187194        setPalColor(15, 255, 255, 255);
    188195}
    189196
     197void ScummEngine::setAmigaMIPalette() {
     198        setPalColor( 0,   0,   0,   0);
     199        setPalColor( 1,   0,   0, 170);
     200        setPalColor( 2,   0, 136,  34);
     201        setPalColor( 3,   0, 102, 119);
     202        setPalColor( 4, 187, 102, 102);
     203        setPalColor( 5, 170,  34, 170);
     204        setPalColor( 6, 136,  85,  34);
     205        setPalColor( 7, 119, 119, 119);
     206        setPalColor( 8,  51,  51,  51);
     207        setPalColor( 9,  34,  85, 221);
     208        setPalColor(10,  34, 221,  68);
     209        setPalColor(11,   0, 204, 255);
     210        setPalColor(12, 255, 153, 153);
     211        setPalColor(13, 255,  85, 255);
     212        setPalColor(14, 255, 255, 119);
     213        setPalColor(15, 255, 255, 255);
     214}
     215
    190216void ScummEngine::setHercPalette() {
    191217        setPalColor( 0,   0,   0,   0);
    192218
     
    258284}
    259285
    260286void ScummEngine::setPaletteFromPtr(const byte *ptr, int numcolor) {
     287        int firstIndex = 0;
    261288        int i;
    262289        byte *dest, r, g, b;
    263290
     
    277304
    278305        dest = _currentPalette;
    279306
    280         for (i = 0; i < numcolor; i++) {
     307        if ((_game.platform == Common::kPlatformAmiga) && _game.version == 4 && _renderMode != Common::kRenderEGA) {
     308                firstIndex = 16;
     309                dest += 3 * 16;
     310                ptr += 3 * 16;
     311        }
     312
     313        for (i = firstIndex; i < numcolor; i++) {
    281314                r = *ptr++;
    282315                g = *ptr++;
    283316                b = *ptr++;
     
    302335                memcpy(_darkenPalette, _currentPalette, 768);
    303336        }
    304337
    305         setDirtyColors(0, numcolor - 1);
     338        setDirtyColors(firstIndex, numcolor - 1);
    306339}
    307340
    308341void ScummEngine::setDirtyColors(int min, int max) {